私は3つのモデルを持っています:
class ProductLine < ActiveRecord::Base
has_many :specifications
has_many :specification_categories, :through => :specifications,
end
class Specification < ActiveRecord::Base
belongs_to :product_line
belongs_to :specification_category
end
class SpecificationCategory < ActiveRecord::Base
has_many :specifications
has_many :product_lines, :through => :specifications
end
基本的に、仕様を製品ライン ページのデータのサブセットとして表示しており、次のようなことを行いたいと考えています (例のみ、はい、N+1 を認識しています)。
コントローラ:
@product_line = ProductLine.find(params[:id])
@specification_categories = @product_line.specification_categories)
意見:
@specification_categories.each do |specification_category|
...
specification_category.specifications.each do |specification|
...
end
end
ここでの問題は、ProductLine によって仕様をフィルタリングするレールを取得することです。これを行うためにクエリを作成しようとしましたが、最終的な関連付けが呼び出されると、常に別の NEW クエリが生成されます。現在、上記のコードを使用していませんが (N+1 問題が発生する可能性があるため、ここではお勧めできません)、アソシエーション フィルタリングを使用して 3 方向の結合を行うことさえ可能かどうかを知りたいです。 . このシナリオに出くわした人はいますか? ここでこれを達成する方法の例を教えてください。