Выполнение условного подсчета с объектами ActiveRecord

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 ответ

Это может работать (примечание: не проверено).

Food.where(meat: true).select{|f| f.chunky? }.count
Другие вопросы по тегам