У меня есть модель Invoice
, которая has_many :line_items
.
Обе модели имеют before_validation
функции обратного вызова.Обратный вызов в счете-фактуре требует, чтобы обратные вызовы позиций были выполнены первыми.Однако по умолчанию выполняется обратный вызов счета-фактуры, а затем выполняется обратный вызов для каждой отдельной позиции.
Есть ли хороший способ убедиться, что позиции проверяются сначала, а затем счет-фактура?
В данный момент я играю с чем-то вроде этого:
class Invoice < ActiveRecord::Base
before_validation :do_something
...
private
def do_something
line_items.each { |line_item| line_item.run_callbacks(:validation) }
# Then do whatever I need here - I've forced the callback order
end
end
Есть ли лучший способ справиться с этим?