使用ActiveRecord对象进行条件计数

时间:2016-01-14 00:04:32

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

Food.where(meat: true).count do |food|
  food.chunky?
end

Food.where(meat: true).count完全相同,因为正在进行SQL样式计数,而不是Enumerable#count类型的计数。

除了Enumerable#count之外,有没有办法进行each类型的计数,如下所示?

Food.where(meat: true).each.count do |food|
  food.chunky?
end

(是的,我知道做food.chunky?涉及创建food个对象并在其上调用方法,而不是在数据库级别执行所有操作 - 有时无法避免)

1 个答案:

答案 0 :(得分:1)

这可能有用(注意:未经测试)。

Food.where(meat: true).select{|f| f.chunky? }.count