从表单中获取选项以在表单模型中的方法中使用
Get an option from a form to use in a method within the forms model
我有一个表单要求用户select从列表中选择一个选项。
在他们选择选项后,模型应计算他们的总账单。
我有一个 after_save 方法来计算总数,但它必须知道用户从表单中 select 编辑了哪个选项。我需要一种方法在该方法运行之前获得该选项,以便它能够准确。我尝试使用 around_save 但找不到有关如何正确实施的文档。这是我现在的代码。
在我的模型中...
class Upsell
include Mongoid::Document
field :user_report_request_type
field :total_cost
...
around_save :total_fees
private
def total_fees
self.total_cost = 0
self.user_report_request_type
yield
items = []
if user.reportapprovals.empty?
items << (self.user_report_request_type).to_i
else
items << (user.reportapprovals.first.manager_request_report_type).to_i
end
...
self.total_cost = items.inject(:+)
end
在此之后它应该保存总数。但是在更新时重新提交此表单后,我无法更新 total_cost 字段。
我明白了!我必须做一个 before_save 和 before_update。它不是 运行 仅在初始保存时更新之前的方法。它需要 运行 更新和初始保存才能正常工作。
before_save :total_fees
before_update :total_fees
我有一个表单要求用户select从列表中选择一个选项。
在他们选择选项后,模型应计算他们的总账单。
我有一个 after_save 方法来计算总数,但它必须知道用户从表单中 select 编辑了哪个选项。我需要一种方法在该方法运行之前获得该选项,以便它能够准确。我尝试使用 around_save 但找不到有关如何正确实施的文档。这是我现在的代码。
在我的模型中...
class Upsell
include Mongoid::Document
field :user_report_request_type
field :total_cost
...
around_save :total_fees
private
def total_fees
self.total_cost = 0
self.user_report_request_type
yield
items = []
if user.reportapprovals.empty?
items << (self.user_report_request_type).to_i
else
items << (user.reportapprovals.first.manager_request_report_type).to_i
end
...
self.total_cost = items.inject(:+)
end
在此之后它应该保存总数。但是在更新时重新提交此表单后,我无法更新 total_cost 字段。
我明白了!我必须做一个 before_save 和 before_update。它不是 运行 仅在初始保存时更新之前的方法。它需要 运行 更新和初始保存才能正常工作。
before_save :total_fees
before_update :total_fees