Rails - 获取2级关系的独特项目

时间:2017-02-16 15:44:39

标签: ruby-on-rails activerecord

如果我建立了这种关系

class article
    has_many :products
end

class product
    has_one :item
end

鉴于某个文章实例,我怎样才能获得所有项目的集合(我不介意它是数组还是 ActiveRecord_AssociationRelation 包含在其中,没有任何重复?这就是集合的每个 Item 都是唯一的。

1 个答案:

答案 0 :(得分:0)

获得答案的最佳方式是翻转问题。您可以从项目开始,只选择右侧文章中包含的项目,而不是从文章开始并查找它包含的所有项目:

my_article = Article.find(...)
items = Item.joins(:product).where(product: { article: my_article })

这将只为您提供属于相关文章的产品的商品。

列表将是唯一的,因为您从所有项目开始,然后使用where缩小列表范围。

修改:这假定该商品具有belongs_to :product语句且商品具有belongs_to :article