对模型中的所有属性求和?



我很好奇是否有一种简单的方法可以将模型中的所有属性求和,而不会看起来重复且不干燥。

我有一个捐赠应用程序,这就是我总结一切的方式:

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 

它只是丑陋,但我不知道如何在不做这样的事情的情况下将它们全部加起来。

谢谢!

看看这个:

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模型中(。

最新更新