我有一个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
有没有更好的方法来解决这个问题?
答案 0 :(得分:1)
检查它们是否有效
def do_something
line_items.all?(&:valid?)
# Then do whatever I need here - I've forced the callback order
end