ruby-on-rails - 你能在 Ruby on Rails 中手动 "trigger"回调吗?

标签 ruby-on-rails ruby

我试图在一个方法中手动运行所有回调方法。例如,我想在我的模型中运行所有“before_destroy”方法。

有没有办法手动触发这个?例如,像这样的东西:

def some_method
  # ...
  trigger(:before_destroy)
end

然后它将运行我用“before_destroy :...”声明的所有方法

有什么想法吗?

最佳答案

如果您乐于同时运行 :before 和 :after 钩子(Hook),您可以尝试 run_callbacks。 来自 the docs :

run_callbacks(kind, &block)

运行给定事件的回调。

按照设置的顺序调用 before 和 around 回调,生成 block (如果有的话),然后以相反的顺序运行 after 回调。

如果回调链停止,则返回 false。否则返回 block 的结果,如果没有给出 block 则返回 true。

run_callbacks :save do
  save
end

关于ruby-on-rails - 你能在 Ruby on Rails 中手动 "trigger"回调吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26110054/

相关文章:

ruby - 在 ruby​​ 中扩展 Date 类

Ruby 1.9.2 导出 CSV 字符串而不生成文件

ruby-on-rails - 在 Posts 模型中保存的用户 ID,如何呈现该用户?

Ruby:ActiveRecord - 第 N 行的索引

ruby-on-rails - 使用 rake 10.1.0 预编译 Assets 时出错

ruby-on-rails - 如何在 Coffeescript 中导入 js 文件?

ruby - Ruby 的 Enumerator 对象如何在内部迭代器上进行外部迭代?

ruby-on-rails - Windows 7 64 位 : Could not find a valid gem 'compass' (>= 0), 这里就是为什么 : Unable to download data from https://rubygems. org/

ruby-on-rails - 如何使 I18n#t 方法在 rspec 测试中可用?

ruby-on-rails - 邮件预览无法正常工作,因为没有路由匹配