型号 Item
拥有 after_commit
回调说 updated_related
class Item < ActiveRecord::Base
after_commit :updated_related
def updated_related
# update related items based on latest item
end
end
还有,一个叫 ItemObserver
该 after_commit
所谓 clear_item_cache
class ItemObserver < ActiveRecord::Observer
def after_commit
#clear item from cache
end
end
现在的问题是 update_related
被先调用,然后再调用观察者,因此相关的项目被调用在陈旧的 item
条目的一部分,如何确保观察者的回调先被调用。
我如何确保观察者的回调首先被调用,因为它属于 item
之后,我想运行相关的项目来运行?
P.S.从观察者回调中删除代码或完全删除回调现在不是一个选项.我在rails 4上使用的是 rails-observable
创业板的Observable.Model Item有一个叫做update_related的回调,class Item < ActiveRecord::Base after_commit :update_related #更新相关的项目.
你可以不使观察者的回调先被调用,而从 文档:
观察者的回调 将总是在模型中定义的回调之后被调用。 本身。
你应该把所有逻辑的 updated_related
融入 after_commit
的观察者,那么你可以控制任何你想要的顺序。
或者你可以在 updated_related
和 after_commit