如何从表单before_update中获取值?

时间:2015-07-16 07:11:41

标签: ruby-on-rails nested-forms

我需要从表单中获取值并在表单更新之前进行调整。

我所拥有的是一个项目,一个项目有许多主要组,主要组有许多交易。

因此,在保存表单之前,我想检查交易中是否有任何成本输入值,如果存在,则总和应该覆盖主要组的成本值。

所以这就是我所拥有的:

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

唯一的问题是它使用数据库中的当前值而不是表单中的新值。

感谢。

1 个答案:

答案 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