Mil*_*ind 1 ruby-on-rails observers ruby-on-rails-3
我有一个UserObserver after_commit(after_create为了避免未找到ID的竞争条件错误而更改为)以更新计数。但是我知道对于每个创建,更新都会执行after_commit代码(我知道会发生)。如何after_commit在创建时运行唯一的?我的解决方案很少,但有点困惑。我试过了:
after_commit :do_something, :on => :create在模型中使用。created_at和updated_at中的观察者;如果它们相同,那就是新记录。user.new_record?我很困惑,因为我想使用第三个,但是它不起作用,我也不知道为什么。我只想使用观察者,而不是模型。有什么想法吗?
根据文档,使用on: :create应该可以:http : //api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html#method-i-after_commit
从 rails 5 开始,Rails 添加了三个新别名来处理这种情况:
after_create_commit, after_update_commit,after_destroy_commit
在您自己的特定情况下,您可以使用:
after_create_commit :do_something.
| 归档时间: |
|
| 查看次数: |
4349 次 |
| 最近记录: |