我正在研究一个有很多属性的模型,有些是其他属性的总和。我想知道这是否是一种有效的方法,如果我应该了解性能问题。该模型大约有200个十进制字段,30个字段与其他字段相加...
这就是我所拥有的:
Class FinancialDatum < ActiveRecord::Base
#---rest omitted
before_save :totalize
def totalize
totalizable = [:total_1,:total2] #etc..
totalizable.each do |t|
unless totalizable_for(t).map{|m|self.send(m).present?}.include? false
self[t] = (totalizable_for(t).map{|num| self.send(num)}).inject(0, :+)
end
end
def totalizable_for(att)
case att
when :total_1
[:debt_1, :debt_2, :deb_t_3]
when :total_2
[debt_4, debt_5]
end
end
end
编辑:
输入和输出非常简单,用户填写:debt_1 => 2, :debt_2 => 3, :debt_3 => 4
,模型应保存:total_1 => 9
感谢。