Joe*_*der 7 ruby-on-rails nested-attributes calculated-field
我有一个发票模型,"有很多"发票项目.我有一个表单,允许您创建/编辑发票,此表单接受发票项目的嵌套属性.
在我的发票模型中,有一个"total_amount"字段,它是一个计算字段(发票项目中"金额"的总和).
我想在创建或更新发票时计算此金额.我试图在发票模型的before_save事件中执行此操作.下面的代码几乎可以工作,但是保存的总数总是落后一步.即如果我的发票总额为20美元,我编辑此发票并将发票项目更改为总计15美元,然后保存我的发票,总数不会更改.如果我打开相同的发票,然后再次保存,则总计会正确更新.
我假设下面计算总和的行是访问已经保存在数据库中的行项目,而不是那些刚刚更改过并且即将保存的行项目.但我不知道如何访问它们.
class Invoice < ActiveRecord::Base
has_many :invoice_items, :dependent => :destroy
accepts_nested_attributes_for :invoice_items, :allow_destroy => true
before_save :record_total_amount
private
def record_total_amount
self.total_amount = self.invoice_items.sum('amount')
end
end
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激.
我解决了这个问题,我不得不用这个替换计算行:
self.total_amount = invoice_items.map(&:amount).sum
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3470 次 |
| 最近记录: |