在rails中,我有3个型号
$HOME
和fifo = open(path, dir_fd='w')
。
Category, SubCategory
has_many Product
和Category
has_many Subcategory
。
据说有Subcatetgory
和Products
。
电影有movie Category
喜欢恐怖/戏剧/喜剧 ......
如何查询畅销电影?
我尝试了TV Category
,但它没有成功。
我可以查询Subcategories
和@category.products
吗?
无论如何还要将它们联系起来?这样我就能找到最畅销的电影类产品。
答案 0 :(得分:1)
是的,您可以设置课程,以便拨打@category.products
。您必须在Category类上定义has_many through
关系:
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]]
这会返回 ActiveRecord 将传递给下一个查询的sub_category
ID列表。假设从第一个查询返回的sub_category
ids是2,4和5,那么你会得到这个:
SELECT "products".* FROM "products" WHERE "products"."sub_category_id" IN (2, 4, 5)
这一切都发生在幕后,你会得到一个很好的Product::ActiveRecord Relation
,你可以照常使用。
答案 1 :(得分:0)
在您的类别模型中,添加以下内容,
has_many :products, through: sub_categories
然后您就可以直接查询了。
希望有所帮助。