has_many to has_many to has_many relationship

时间:2016-01-28 21:03:02

标签: ruby-on-rails ruby activerecord

我有一个具有以下型号的应用程序: - 类别 - 子类别 - 产品 - ProductSubcategory

我的关系如下:

Category has_many :subcategories

Subcategory belongs_to :category
Subcategory has_many :product_subcategories
Subcategory has_many :products, through: :product_subcategories

Product has_many :product_subcategories
Product has_many :subcategories, through: :product_subcategories

我想访问某个类别中的所有产品。什么是最好的方式?我尝试了类别has_many:product_subcategories,通过:: categories,但它没有用。无论如何我能做到吗?

编辑:在sql代码中,我的问题将通过这个SQL查询解决:

    SELECT products.* FROM products
INNER JOIN product_subcategories
  ON product_subcategories.product_id = products.id
INNER JOIN subcategories
  ON product_subcategories.subcategory_id = subcategories.id
INNER JOIN categories
  ON categories.id = subcategories.category_id
WHERE
  categories.id = 1;

提前致谢:)

1 个答案:

答案 0 :(得分:0)

您希望通过Subcategory建立关系,即:

class Category < ActiveRecord::Base
  has_many :products, through: :subcategories
end