Rails 3:确保在其他人之后调用before_save回调

Joh*_*n H 2 ruby activerecord ruby-on-rails-3

有没有办法确保在ActiveRecord中的所有其他before_save回调之后执行给定的before_save回调,而不是在代码中实际排序它们?

我正在编写一个包含一些before_save功能的外部库,但为了有效,它确实需要在所有其他功能之后调用.我可以解决它,但它涉及放弃我真的不想要的脏属性!

- 编辑 -

我没有意识到在保存模型后维护了脏属性.所以@ page.attribute_was仍然可以yield用于around_save.

Car*_*auf 5

你可以让你想要执行的around_save回调最后一次回调.查看可用回调列表,看看是否可以简单地为一些回调使用不同的回调"桶",以确保它们按所需顺序执行.

如果你最终仍然有多个before_save回调并需要一个最后触发,你可能想要创建自定义回调,比如可能define_model_callbacks :split_save,将常规before_save回调注册为before_split_save回调,你最后要作为after_split_save回调执行的回调,然后只需一个before_save回调运行这两组回调(run_callbacks :split_save).有关ActiveModel::Callbacks如何执行此操作的详细信息,请参阅