尝试先在 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
并修复了它。
我正在计算我的嵌套 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
并修复了它。