Ruby on rails 如何查询rubyonrails链关系有很多
在rails中,我有3种型号Ruby on rails 如何查询rubyonrails链关系有很多,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,在rails中,我有3种型号 类别、子类别和产品 一个类别有许多子类别 而一个子类别拥有许多产品 也就是说,有一个电影类别和一个电视类别。 这部电影有子类别像恐怖片/戏剧/喜剧 如何查询最畅销的电影? 我尝试了@category.products,但它不起作用 我可以查询@category.subcategories和@subcategory.products? 有没有办法把他们锁起来?这样我就可以找到最畅销的电影类产品 在类别模型中,添加以下内容 有许多:产品,通过:子类别 然后你就可以直接
类别、子类别
和产品
一个类别
有许多子类别
而一个子类别
拥有许多产品
也就是说,有一个电影类别
和一个电视类别
。
这部电影有子类别
像恐怖片/戏剧/喜剧
如何查询最畅销的电影?
我尝试了@category.products
,但它不起作用
我可以查询@category.subcategories
和@subcategory.products
?
有没有办法把他们锁起来?这样我就可以找到最畅销的电影类产品 在类别模型中,添加以下内容
有许多:产品,通过:子类别
然后你就可以直接查询了
希望有帮助 是的,可以设置类,以便调用@category.products
。您必须在Category类上定义一个通过
的关系:
class Category
has_many :products, through: :sub_categories
end
现在,如果您有@category
并请求@category.products
,ActiveRecord将对数据库发出两个请求。第一个将如下所示:
SELECT "sub_categories"."id" FROM "sub_categories" WHERE "sub_categories"."category_id" = $1 [["category_id", 1]]
这将返回sub_category
id的列表,ActiveRecord将传递给下一个查询。假设第一次查询返回的sub_category
id为2、4和5,那么您将得到以下结果:
SELECT "products".* FROM "products" WHERE "products"."sub_category_id" IN (2, 4, 5)
这一切都发生在幕后,你会得到一个很好的
Product::ActiveRecord关系
,你可以像平常一样使用它。回答得很好,很彻底!我希望您先浏览一下rails文档。。