我有两个模型投票和选项,每个模型都有“总数”和“数量”列。 (投票has_many:选项)
我想最初这样实现:
Option.quantities.each {| quantity |总+ =量}
Vote.total =总
如何实现?
答案 0 :(得分:1)
您是否要求替代实施?或者其他什么?您可以使用Enumerable::inject
执行相同的操作,例如:
class Vote < ActiveRecord::Base
has_many :options
def calculate_total
total = self.options.inject(0) { |sum, vote| sum += vote.quantity }
save!
end
end
通过这种方式,每次调用calculate_total
时都会计算并保存投票总数。