ActiveRecordを利用していて、どうやってwhereを書くのかわからないことがありますし
良く聞かれたりもしますので、書き方について、まとめておきます。
where
ActiveRecordの条件を記述する際に利用します。
model
# app/models/user.rb class User < ApplicationRecord end
Userを利用して書いていきます。
単一modelの条件の書き方
$ rails c
admins = User.where(admin: true, name: 'hoge')
# admins = User.where("admin = 1 and name = 'hoge'") こちらも同じです。
p admins
複数modelの条件の書き方
modelを書き換えます。
class User < ApplicationRecord belongs_to :role end class Role < ApplicationRecord has_many :users end
$ rails c
admins = User.joins(:role).where(role: { name: 'admin' })
p admins
ヒアドキュメントを利用する。
# admins = User.where("admin = 1 and name = 'hoge'")
admins = User.where(<<-SQL)
admin = 1
and name = 'hoge'
SQL
参考
Active Record クエリインターフェイス | Rails ガイド
以上になります。