我有产品清单和类别列表。我还有一个映射表product_categories
,它告诉我们产品属于不同的类别,而且类别也有很多产品。这里的类别列表由admin定义。类别的数量是固定的,但可以变化。现在我需要获得用类别
product.rb
has_many :product_categories, dependent: :destroy
has_many :categories, through: :product_categories
category.rb
has_many :product_categories
has_many :products, :through => :product_categories
product_category.rb
belongs_to :product
belongs_to :category
我把代码编写为:
ProductCategory.joins(:category).map(&:category).uniq
有没有办法简化这一行?
答案 0 :(得分:1)
试试这个,
Category.joins(:products).distinct
答案 1 :(得分:1)
要获取包含产品的类别列表,您可以使用SQL inner join
,这是rails中的默认值。
Category.joins(:product_categories).distinct