jpe*_*thy 14 ruby ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)
我可以通过运行显式调用回调来保存:
> u.run_callbacks(:save)
hi
bye
=> true
Run Code Online (Sandbox Code Playgroud)
但我的问题是,我怎么只能运行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
Run Code Online (Sandbox Code Playgroud)
我不知道如何构建*args
只在回调之前或之后调用,我尝试了类似的东西u.run_callbacks(:before_save)
(给我未定义的方法错误)并u.run_callbacks(:save, :before)
运行所有的保存回调(之前和之后).
我还在研究如何只执行after_save,但是要运行JUST the before_save回调,你可以做类似的事情:
u.run_callbacks(:save) { false }
Run Code Online (Sandbox Code Playgroud)
这应该在before_save运行之后取消回调.
归档时间: |
|
查看次数: |
7103 次 |
最近记录: |