基于关联模型计数获取记录

时间:2014-11-08 06:55:20

标签: ruby-on-rails ruby

我想使用如下的where语句:

BaseProduct.where(BaseProduct.products.count => 1) 

这不起作用。我得到了未定义的方法'产品'对于xyz类。

在rails控制台中,我可以做到

BaseProduct.first.products

并获得良好的输出。

如何获取相关模型计数为1的记录?

社团:

class BaseProduct < ActiveRecord::Base
  has_many :products
end

class Product < ActiveRecord::Base
  belongs_to :base_product
end

2 个答案:

答案 0 :(得分:0)

试试这样:

BaseProduct.select("base_products.*, COUNT(products.id) AS cp")
    .joins("INNER join products ON products .base_product_id= products.id")
    .group("products.base_product_id")
    .having("cp > 1")

答案 1 :(得分:0)

请试试这个

Product.select('base_product_id, count(base_product_id) as c').includes('base_product').group('products.base_product_id').having('c > 1')