2016-01-28 110 views
2

我有了以下型号的应用程序: - 类别 - 次 - 产品 - ProductSubcategory的has_many到HAS_MANY到HAS_MANY关系

我的关系如下:

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,通过::类别,但它没有工作。无论如何,我可以做到吗?

编辑:

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; 

感谢提前:)

+0

你的'schema.rb'看起来像什么? – BalinKingOfMoria

回答

0

你想通过Subcategory建立的关系,即:

在SQL代码,我的问题就与此SQL查询来解决
class Category < ActiveRecord::Base 
    has_many :products, through: :subcategories 
end 
+0

我试过了,但我收到以下错误: NoMethodError:未定义的方法'klass'为零:NilClass – Morris