我正在开发一个具有以下结构的简单Rails:
Product
has_and_belongs_to_many :subscribers
Subscriber
has_and_belongs_to_many :products
如何获得所有订阅者的产品? 0?
def self.has_subscribers
#subscribers > 0
end
答案 0 :(得分:3)
@product.subscribers.count > 0
所以你可以做点什么
def has_subscribers?
subscribers.count > 0
end
答案 1 :(得分:0)
def self.has_subscribers
Product.joins("LEFT JOIN products_subscribers ON products_subscribers.product_id = products.id").where("products_subscribers.product_id IS NOT NULL")
end
HTH
编辑:我不确定,如果下面会有效,但您可以尝试一下:
def self.has_subscribers
Product.joins(:products_subscribers)
结束
由于 joins
使用INNER JOIN
,因此它应仅返回在加入表中与products
有关系的subscribers
记录。
编辑2:刚加入加入表可能不会(事实上不应该)起作用,因为加入表通常没有模型。
上述内容对我有用,但我忘记了GROUP
结果。
Product.joins("LEFT JOIN products_subscribers ON products_subscribers.product_id = products.id").where("products_subscribers.product_id IS NOT NULL").group("products.id")
如果你仍然得到Subscribers
,那就有点奇怪了。请发布您的功能并查询代码。
答案 2 :(得分:0)
Product.where( '(select count(1) from products_subscribers where product_id = products.id > 0)')