仅在创建时使用after_commit

Mil*_*ind 1 ruby-on-rails observers ruby-on-rails-3

我有一个UserObserver after_commitafter_create为了避免未找到ID的竞争条件错误而更改为)以更新计数。但是我知道对于每个创建,更新都会执行after_commit代码(我知道会发生)。如何after_commit在创建时运行唯一的?我的解决方案很少,但有点困惑。我试过了:

  1. after_commit :do_something, :on => :create在模型中使用。
  2. 检查created_atupdated_at中的观察者;如果它们相同,那就是新记录。
  3. 使用 user.new_record?

我很困惑,因为我想使用第三个,但是它不起作用,我也不知道为什么。我只想使用观察者,而不是模型。有什么想法吗?

Van*_*tin 5

从 rails 5 开始,Rails 添加了三个新别名来处理这种情况: after_create_commit, after_update_commit,after_destroy_commit

在您自己的特定情况下,您可以使用:

after_create_commit :do_something.