ruby-on-rails - Rails 3 run_callbacks 方法

标签 ruby-on-rails ruby ruby-on-rails-3

我正在使用新的 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_saveafter_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 以仅调用 beforeafter 回调,我尝试了类似 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/

相关文章:

ruby-on-rails - 无法加载此类文件——rails 3.2.3 中的 lib/api grape

ruby-on-rails - 在 Windows 上安装 rmagick gem

ruby - ruby 中#entries 和#to_a 的区别

ruby-on-rails - 如何在保存之前在 Rails 3 中手动设置嵌套模型值?

ruby-on-rails - Rails 中的两步身份验证

ruby-on-rails - prawn-table 设置标题行的背景色

ruby-on-rails - 用户中的 NoMethodError #index 'undefined method ` each' for nil :NilClass'

ruby-on-rails - Ruby Integer()、Array() 等——它们是什么?他们来自哪里?

ruby-on-rails-3 - 为什么 Rails 指南建议在关联上使用 scoped 方法?

javascript - RailwayJS/Express on Rails : A true node. js 替代 Ruby On Rails?