获取所有关联记录具有属性的记录

时间:2013-04-26 09:36:14

标签: mysql ruby-on-rails ruby-on-rails-3 activerecord

以下是我的课程:

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查询都可以接受。

编辑:我们有成千上万的产品,我们需要将这些操作委托给数据库,因为我们必须进行分页,对这类产品上的喜欢进行排序。

2 个答案:

答案 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)