如果我建立了这种关系
class article
has_many :products
end
class product
has_one :item
end
鉴于某个文章实例,我怎样才能获得所有项目的集合(我不介意它是数组还是 ActiveRecord_AssociationRelation ) 包含在其中,没有任何重复?这就是集合的每个 Item 都是唯一的。
答案 0 :(得分:0)
获得答案的最佳方式是翻转问题。您可以从项目开始,只选择右侧文章中包含的项目,而不是从文章开始并查找它包含的所有项目:
my_article = Article.find(...)
items = Item.joins(:product).where(product: { article: my_article })
这将只为您提供属于相关文章的产品的商品。
列表将是唯一的,因为您从所有项目开始,然后使用where
缩小列表范围。
修改:这假定该商品具有belongs_to :product
语句且商品具有belongs_to :article
。