从表单中获取选项以在表单模型中的方法中使用

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