以下是我的课程:
class Product < ActiveRecord::Base
has_and_belongs_to_many :categories
end
class Category < ActiveRecord::Base
has_and_belongs_to_many :products
end
类别有visible
booloean。
我需要在Product
中创建一个范围,以便我可以获得所有类别都是可见的产品(例如:如果一个产品有10个类别,甚至一个类别的visible
设置为false ,范围应该丢弃产品。)
ActiveRecord调用和MySQL查询都可以接受。
编辑:我们有成千上万的产品,我们需要将这些操作委托给数据库,因为我们必须进行分页,对这类产品上的喜欢进行排序。答案 0 :(得分:1)
Product.where("id not in (select product_id from categories where visible='false')")
希望这有帮助。
答案 1 :(得分:0)
您是否可以尝试查找所有产品:可见为false。然后从所有产品中减去此信息。
Product.all - Product.where('categories.visible=?', false).includes(:category)