RailsでMongoDBを使う

f:id:utouto97:20210704222353j:plain

Mongoid

RailsでMongoDBを使うには、Mongoidを利用します。

Mongoidは、RubyのMongoDB用ORMです。
RailsRDBを利用する場合、Active Recordが広く使われていますが、それのMongoDB版だということです。

Mongoidは、Active Recordと似たようなインターフェースがあり、Active Recordを使ったことがある人は使いやすいと思います。

実際に試してみる

Mongoidのインストール

では、実際にMongoidを使っていきます。

まず、Railsプロジェクトの作成時に、--skip-active-recordオプションをつけることで、Active Recordをスキップします。
それと同時に、通常のRDB関連のGemもインストールしません。

$ rails new . --skip-active-record --force

MongoidはGemでインストールできるので、Gemfileに追記して、bundle installします。

gem 'mongoid'

bundle installすると、Mongoidのインストールは完了です。

RailsでMongoidを使う

rails g scaffoldで一気にいろいろ生成します。

$ docker-compose run rails rails g scaffold user name age:integer --timestamp

これで、Userモデルやそのコントローラが作成されました。
ルーティングも自動で設定されています。

f:id:utouto97:20210818210846p:plain

http://localhost:3000/usersにアクセスすると、↑のようなページが表示されました。
(ユーザー追加してます)

Mongoidのモデルの使用例

先に説明した方法で生成されたモデルの使用例をいくつかみてみます。
(それぞれ抜粋です)

# 新規作成
@user = User.new(user_params)

# 更新
@user.update(user_params)

# 消去
@user.destroy

# 検索
@user = User.find(params[:id])

見てわかる通り、ActiveRecordとほぼ同様の方法で操作できます。
ただし、MongoDBでは結合ができないため、Mongoidのモデルでも結合ができません。
その他にも、いくつかActive Recordと異なる点があります。

終わり