2

私は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

これを処理するより良い方法はありますか?

4

1 に答える 1

1

それらが有効かどうかを確認するには

def do_something
  line_items.all?(&:valid?)
  # Then do whatever I need here - I've forced the callback order
end
于 2011-04-27T11:35:49.883 に答える