Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何查询rubyonrails链关系有很多_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 如何查询rubyonrails链关系有很多

Ruby on rails 如何查询rubyonrails链关系有很多,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,在rails中,我有3种型号 类别、子类别和产品 一个类别有许多子类别 而一个子类别拥有许多产品 也就是说,有一个电影类别和一个电视类别。 这部电影有子类别像恐怖片/戏剧/喜剧 如何查询最畅销的电影? 我尝试了@category.products,但它不起作用 我可以查询@category.subcategories和@subcategory.products? 有没有办法把他们锁起来?这样我就可以找到最畅销的电影类产品 在类别模型中,添加以下内容 有许多:产品,通过:子类别 然后你就可以直接

在rails中,我有3种型号
类别、子类别
产品

一个
类别
有许多
子类别
而一个
子类别
拥有许多
产品

也就是说,有一个
电影类别
和一个
电视类别
。 这部电影有
子类别
像恐怖片/戏剧/喜剧

如何查询最畅销的电影? 我尝试了
@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文档。。