【发布时间】:2015-07-16 07:11:40
【问题描述】:
我需要从表单中获取值并在表单更新之前对其进行调整。
我有一个项目,一个项目有很多主要组,主要组有很多交易。
因此,在我保存表单之前,我想检查 Trades 中的成本输入是否有任何值,如果有,其总和应该会覆盖 Main Groups 的成本值。
这就是我所拥有的:
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
唯一的问题是它使用数据库中的当前值而不是表单中的新值。
谢谢。
【问题讨论】:
-
您可以编写一个单独的方法并通过(比如
@main_group)对象调用它。在此之前,您必须将@main_group.trades设置为要更新的值,然后 self 将具有来自 form 而不是来自 DB -
嗨,谢谢,我是一个 Rails 菜鸟,但这有点道理。
标签: ruby-on-rails nested-forms