私は、コード内にたくさんの醜いSQLがなくても、Railsの魔法を使ってかなり複雑なクエリになると思っています。named_scope with has_many associations
私のデータベースはかなり専門的な生物医学的モデルを扱っているので、私は以下をより現実的なシナリオに翻訳します。
は、私はモデルのブックを持っている
にhas_many:章
と章その
belongs_toの:書籍
インスタンスの章は、name属性を持ち、名前は序文なることができると言うために、序文と章という付録がありますが、付録という章はありません。実際にこれらの任意の組み合わせ
私は序文と紹介と呼ばれる章の両方を持つすべての本を探しています。現時点では
I帳を呼び出す場合
Book
named_scope :has_chapter?, lambda { |chapter_names|
condition_string_array = []
chapter_names.size.times{condition_string_array << "chapters.name = ?"}
condition_string = condition_string_array.join(" OR ")
{:joins => [:chapters] , :conditions => [condition_string, * chapter_names]}
}
を次のように私はnamed_scopeを持っています。 has_chapter? ["preface"、 "introduction"]これは私に序文または紹介という章を持つすべての本を見つけます。どのように私はそれを分離して見つけることが似たようなことをすることができます両方章の序文と紹介?
私はSQLに精通していないので、どのような種類の結合が必要であり、名前付きスコープでこれを達成できるかどうかは不明です。
感謝
アンソニー
これは非常にうまくいきます。いくつかの指標を追加することが助けになりました。 – Anthony
+1正確に私が探していたもの、ありがとう! – MiniQuark
はい、PostgreSQLはサブクエリをサポートしています。これはMySQLよりも早くサポートされているので、それも同様に機能しています。 –