whereの指定方法
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 ガイド
以上になります。