Выполнение условного подсчета с объектами 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