我很好奇,是否有一种简单的方法可以对模型中的所有属性求和而不使它看起来重复,而不是DRY。
我有一个捐赠应用程序,这就是我汇总所有内容的方式:
def self.total_donations
array = Category.pluck(
'SUM(toilet_paper)',
'SUM(dental_hygiene)',
'SUM(first_aid)',
'SUM(general_hygiene)',
'SUM(underwear_socks)',
'SUM(blankets)',
'SUM(school_supplies)',
'SUM(diapers)').flatten.compact
array.inject(0){|sum, x| sum + x}
end
这很丑陋,但我不知道如何在不进行此类操作的情况下将所有内容加起来。
谢谢!
答案 0 :(得分:1)
看看这个:
def self.total_donations
sum("toilet_paper + dental_hygiene + first_aid + general_hygiene + underwear_socks + blankets + school_supplies + diapers")
end
生成的SQL:
SELECT SUM(toilet_paper + dental_hygiene + first_aid + general_hygiene + underwear_socks + blankets + school_supplies + diapers)
FROM "categories"
请注意,在类实例方法中,不必使用Category
,因为它是self
(假设方法在Category
模型中)。