ActiveRecordクエリインタフェース
Where
like
$ User.where("name LIKE ?", "%foo%")
not
where.not(...)
whereの中でSQLを作ることで相関サブクエリできる
$ Post.where('EXISTS(SELECT 1 FROM comments WHERE comments.post_id = posts.id AND comments.created_at >= ?)', Time.new(2023))
$ Post.where(Comment.where('post_id = posts.id').where('created_at >= ?', Time.new(2023)).arel.exists)
Join
associated
関連があるレコードのみを取得する
User.where.associated(:roles)
Inner Join + where not Null条件
missing
関連先が存在しない場合のみ取得する
User.where.missing(:group)
Left Outer Join + where Null条件
code:ruby
# missingなし
Master.left_joins(:datas).where(datas: {id: nil})
# missingあり
Master.where.missing(:datas)
参照