尝试先在 before_save 上更新嵌套模型

Trying to update nested model first on before_save

我正在计算我的嵌套 item model 中的 :price,以便将其映射到我的 invoice model 中。问题是 invoice model 中的 before_save 首先被调用,我希望它在嵌套 item model

中的 before_save 之后被调用

关于如何做到这一点有什么想法吗?

这是我的模型

invoice.rb

class Invoice < ActiveRecord::Base
belongs_to :user
has_many :items

accepts_nested_attributes_for :items, :reject_if => :all_blank, :allow_destroy => true

validates :sender, presence: true

before_save :increment_invoice_number, :set_amount

private

def increment_invoice_number
    if published == true
        self.invoice_number = user.invoices.where(:published => true).count + 1
    end
end

def set_amount
    self.amount = items.map(&:price).sum(&:to_i)             
end

end

和item.rb

class Item < ActiveRecord::Base
 belongs_to :invoice

 before_save :set_price

  def set_price
    self.price = cost.to_i * quantity.to_i
  end
end

我将 validates_associated :items 添加到 invoice.rb 然后将我的嵌套模型中的 before_save 更改为 before_validation 并且还添加了 validates_presence_of :price 并修复了它。