Попытка сначала обновить вложенную модель в before_save
Я рассчитываю :price
в моем вложенном item model
для того, чтобы отобразить его в моем invoice model
, Проблема в том, что before_save
в invoice model
вызывается первым, и я хочу, чтобы он вызывался после before_save
во вложенномitem model
Есть идеи, как это сделать?
Вот мои модели
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
1 ответ
Решение
Я добавил validates_associated :items
в invoice.rb
а потом поменял before_save
в моей вложенной модели before_validation
а также добавил validates_presence_of :price
и это исправило это.