我需要从表单中获取值并在表单更新之前进行调整。
我所拥有的是一个项目,一个项目有许多主要组,主要组有许多交易。
因此,在保存表单之前,我想检查交易中是否有任何成本输入值,如果存在,则总和应该覆盖主要组的成本值。
所以这就是我所拥有的:
class MainGroup < ActiveRecord::Base
belongs_to :project
has_many :trades
accepts_nested_attributes_for :trades, :reject_if => :all_blank, :allow_destroy => true
private
before_update do
if (self.trades.sum(:cost) != 0)
self.cost = self.trades.sum(:cost)
else
self.cost = self.cost
end
end
end
唯一的问题是它使用数据库中的当前值而不是表单中的新值。
感谢。
答案 0 :(得分:1)
before_save :update_cost_from_trades
private
def update_cost_from_trades
unless trades.sum(:cost).is_zero?
self.cost = trades.sum(:cost)
end
end