Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

after_commitで無限ループの恐怖

More than 3 years have passed since last update.

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

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

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

http://stackoverflow.com/questions/22567358/prevent-infinite-loop-when-updating-attributes-within-after-commit-on-crea:embed:cite

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

after_commit :hoge, :on => :create

def hoge
  self.update(status: "hoge") #update_attributesでもダメポ
  mail.deliver if Rails.env.production?
end
mekemo_dao
投資やってるエンジニアです。 【人生で探求するもの】コンピューターサイエンス / 投資(株・FX・仮想通貨など) / 人の精神世界
http://www.summoner-frontier.net
overflow
私たちは、家族、その他の大切なひとや、自分と向き合う時間、本質的な時間をふやすを実現するために世の中の非効率を解決する事業を展開していきます。
https://overflow.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away