Rails:在父对象的回调之前,我应该如何运行关联对象的回调?



我有一个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

有更好的方法来处理这个吗?

检查它们是否有效

def do_something
  line_items.all?(&:valid?)
  # Then do whatever I need here - I've forced the callback order
end

相关内容

  • 没有找到相关文章

最新更新