Rails 3 アプリで、親関連付けの列が特定の文字列と等しいレコードを見つけようとしています。例: カテゴリ名 = "my_category" の投稿。
class Post
belongs_to Category
end
class Category
has_many Posts
end
カテゴリには名前列が含まれており、それが検索を実行するために使用できる唯一のデータです。したがって、category_id で直接フィルタリングすることはできません。
これを行うための最も効率的な Rails-y の方法は何ですか。機能するはずのオプションをいくつか試しましたが、機能しませんでした!.
Post.joins(:category).where('category.name'=>'my_category')
Post.joins(:category).where(:category=>{:name=>'my_category'})
Post.includes(:category).where('category.name'=>'my_category')
Post.includes(:categories).where('category.name'=>'my_category')
Post.includes(:category).where(:category=>{:name=>'my_category'})
これを2行で行う方法を見ることができます
category=Category.where(:name=>"my_category")
Post.where(:category_id=>category)
しかし、Rails マジックを見落としているのではないでしょうか? 初心者の質問で申し訳ありませんが、私はまだ学んでいます!