需要简单的Rails多对多关联逻辑

时间:2016-10-27 10:36:48

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

我有产品清单和类别列表。我还有一个映射表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

有没有办法简化这一行?

2 个答案:

答案 0 :(得分:1)

试试这个,

Category.joins(:products).distinct

答案 1 :(得分:1)

要获取包含产品的类别列表,您可以使用SQL inner join,这是rails中的默认值。

Category.joins(:product_categories).distinct