読者です 読者をやめる 読者になる 読者になる

production.log

ピクスタ株式会社でエンジニアのマネージャーをやっている星直史のブログです。

ActiveRecordのコールバックにハマったでござる

  1. 無限ループに泣く
class Hoge < ActiveRecord::Base
  before_update :update_hoge!, if: :fuga_changed?
  
  private
  
  def update_hoge!
    hoge = true
    save!
  end
end

Hoge.find(1).update_attributes!(fuga: true)
  1. コールバックが発火しない
class Hoge < ActiveRecord::Base
  before_update :update_hoge!, if: :fuga_changed?
  
  private
  
  def update_hoge!
    hoge = true
    save!
  end
end

Hoge.update_all(fuga: true)

小さな事だけど、結構はまってワロタ。