我有 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
这里的问题是让 Rails 过滤 ProductLine 的规范。我已经尝试构建查询来执行此操作,但是在调用最终关联时它总是会生成一个单独的 NEW 查询。即使我们现在没有使用上面的代码(这里不是一个好主意,因为我们可能会遇到 N+1 问题),我想知道是否可以使用关联过滤进行 3 路连接. 有没有人遇到过这种情况?您能否提供一个示例,说明我将如何在此处完成此操作?