0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

after_createとafter_updateを共存させるとオーバーライドするからafter_commitでまとめちゃう!の時に立ち止まって考えること

Posted at

この記事で伝えたいこと

単純にafter_createとafter_updateがまとまったのがafter_commitというわけではないよ、ということ

経緯

実装でafter_create_commitが宣言されていて、
「あ、これと同じようなことをupdateでもやりたいから、下にafter_updateしちゃえ」
ってやろうとしたら、どうやらrailsガイドに注意書きが

どうやらオーバーライドされてしまうらしい。
ということでじゃあ、after_commitでまとめるかーって単純な発想になったのだけど、そもそもこれら、実行されるタイミングが違うのです。

DBに保存(commit)される前か後という大きな違い

使えるメソッドがまず変わってきます。
DB保存後はattrbutes_wasみたいなのが使えないです。

この記事のような。
https://qiita.com/htz/items/56798d53ec5988733fc6

commit内で条件分岐するときや判定が必要な時は気をつけましょう。
createとupdateをまとめるときはafter_commitにまとめるのはいいと思うのですが
まとめた後のことも考えた方が良さそうです。。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?