Rails 3アプリで、親関連の列が等しいレコードが特定の文字列であるレコードを検索しようとしています。たとえば、カテゴリ名= "my_category"の投稿です。Rails 3のbelongs_to関連の列を照会する最も効率的な方法は何ですか?
class Post
belongs_to Category
end
class Category
has_many Posts
end
カテゴリには名前列が含まれていますが、これは検索を実行するために使用できる唯一のデータです。だから、私はcategory_idで直接フィルタリングすることはできません。
これを実行する最も効率的な方法は何ですか?私は彼らがうまくいくはずのようないくつかのオプションを試しましたが、そうしませんでした!
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の魔法を見下ろすていますかしら?申し訳ありませんが、それはノブの質問ですが、私はまだ学んでいます!
おかげで@ blackbird07!正確に私が探していたこと、単一のデータベース呼び出し。私はとても近く、カテゴリを複数形にするだけでした。これらの複雑なアクティブレコードクエリは、常に私を混乱させる。私はいつもヒットとミス、試行錯誤のような気がして、正しい構文を取るかどうかはわかりません。私に役立つかもしれない有用な参考資料、またはあなたの経験則をお持ちですか?もう一度ありがとう! –
うん、あまりにも痛みを感じる。私はいつもレールガイドhttp://guides.rubyonrails.org/active_record_querying.htmlとhttp://guides.rubyonrails.org/association_basics.htmlとAPIドキュメントhttp://api.rubyonrailsを見ています。 org/classes/ActiveRecord/Base.htmlを参照してください。後者の「結合」を検索すると、次の例が見つかります:学校と:学校 – emrass
そして私も何かを学びました!ありがとうblackbird07 – Edward