我正在使用新的 Rails 3 API,我对新方法有疑问 run_callbacks(kind, *args, &block)
在下面的代码中:
class User < ActiveRecord::Base
before_save :say_hi
after_save :say_bye
private
def say_hi; puts "hi"; end
def say_bye; puts "bye"; end
end
我可以通过运行在保存时显式调用回调:
> u.run_callbacks(:save)
hi
bye
=> true
但是我的问题是,我如何才能仅运行before_save 或after_save 回调?
查看 run_callbacks(kind, *args, &block)
代码:
# File activesupport/lib/active_support/callbacks.rb, line 92
def run_callbacks(kind, *args, &block)
send("_run_#{kind}_callbacks", *args, &block)
end
我不知道如何构建 *args
以仅调用 before 或 after 回调,我尝试了类似 u .run_callbacks(:before_save)
(给我未定义的方法错误)和 u.run_callbacks(:save, :before)
运行所有保存回调(之前和之后)。
最佳答案
看起来您遇到了 Rails 3.0 中的错误。它似乎在 3.0.1 的队列中,如 this lighthouse ticket 中所述.
正如@venables 所说,您至少可以通过将 false
发送到 run_callbacks(:save)
来触发 before_save 回调。
关于ruby-on-rails - Rails 3 run_callbacks 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3660691/