Попытка сначала обновить вложенную модель в 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 и это исправило это.

Другие вопросы по тегам