Cra*_*ney 8 ruby ruby-on-rails callback
我的应用程序中有拍卖和出价对象,当有人按下BID BUTTON然后调用创建出价的BID CREATE控制器,然后在拍卖对象上做一些其他事情:
BIDS控制器 - >创建
@auction.endtime += @auction.auctiontimer
@auction.winner = @auction.arewinning
@auction.save
Run Code Online (Sandbox Code Playgroud)
拍卖模型
before_update :set_endtime
def set_endtime
self.endtime=self.starttime+self.auctiontimer
end
Run Code Online (Sandbox Code Playgroud)
所以问题是:在这个特定的@ auction.save中,C如何才能跳过"回调前"
jua*_*tas 13
skip_callback 是一个复杂而不是粒度的选项.
我更喜欢使用attr_accessor:
attr_accessor :skip_my_method, :skip_my_method_2
after_save{ my_method unless skip_my_method }
after_save{ my_method_2 unless skip_my_method_2 }
Run Code Online (Sandbox Code Playgroud)
这样,您可以在跳过回调时声明:
model.create skip_my_method: true # skips my_method
model.create skip_my_method_2: true # skips my_method_2
Run Code Online (Sandbox Code Playgroud)
ActiveSupport::Callbacks::ClassMethods#skip_callback 不是线程安全的,它会在执行之前删除回调方法,因此另一个线程同时无法获取回调方法来执行。
查看 Allerin 的信息丰富的帖子 -在 RAILS 应用程序中保存对象跳过回调
| 归档时间: |
|
| 查看次数: |
19570 次 |
| 最近记录: |