Railsのafter_commitの無限ループの罠
Rails5がどうなってるか確認してないが、
Rails4だとafter_commitに恐ろしい罠があり、
after_commit :hoge, :on => :create でhogeメソッド内にupdate処理を行うと無限ループする。
updateじゃなくてcreateなのに無限ループする…。
直観的じゃないからハマりそうなもんなのに、あまりググっても出てこないから書いてみた。
外国人だとstackoverflowでは書いてる人がいた。
stackoverflow.com
データ作成した後で、after_commit内でステータスを変更して、メールを送信する、
みたいなコード書いたら死ぬ\(^o^)/
こんな感じ。本番にリリースすると障害発生((((;゚Д゚))))ガクガクブルブル
after_commit :hoge, :on => :create def hoge self.update(status: "hoge") mail.deliver if Rails.env.production? end
あなたの発想で組み立て♪★無限ループ スペースレール パズル 知育 脳トレ レベル2
- 出版社/メーカー: ミッション
- メディア:
- この商品を含むブログを見る