1
3

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 5 years have passed since last update.

after_commitで無限ループの恐怖

Last updated at Posted at 2016-08-05

Rails5では確認していないが、Rails4で確認。
after_commit :hoge, :on => :create でhogeメソッド内にupdate処理を行うと
無限ループする。

updateじゃなくてcreateなのに無限ループする…。
直観的じゃないからハマりそうなもんなのに、あまりググっても出てこないから書いてみた。
外国人だとstackoverflowで書いてる人がいた。

これがバグなのかバグじゃないのか、修正されるのかされないのかは不明。

こんな感じのコード書いて、本番にリリースすると無限にメールが
送信される障害発生((((;゚Д゚))))ガクガクブルブル

after_commit :hoge, :on => :create

def hoge
  self.update(status: "hoge") #update_attributesでもダメポ
  mail.deliver if Rails.env.production?
end
1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?