rails6 joins whereで関連モデルも検索条件に加える

過去にこんな記事を書いた。
rails3 joinsで別モデルの情報も条件に加える

いやいやいやいや、過去の自分!arel使ってドヤっちゃったよ!
もう最近はこの記事のとおり、arelを使ってません。
Arelでクエリを書くのはやめた方が良い5つの理由

というわけで、元記事のこれ

User.joins(:items).where(Item.arel_table[:name].eq(‘エクスカリバー’)).uniq

をリファクタリングすると、こうなる。

User.joins(:items).where(items: {name: 'エクスカリバー'}).distinct

joinsには「has_many, has_oneとかの参照名」を書いて、whereにはDBのテーブル名を書くこと。
これがごっちゃに良くなる・・。

タイトルとURLをコピーしました