shimgo
2/21/2020 - 6:26 AM

ActiveRecordでコールバックをスキップする

マイグレーションファイル内でデータ作ってる時にまだ作ってないテーブルを 使ったコールバックが走っちゃってそれを防ぎたいとき

class User
  has_one :user_setting
  
  before_create :default_setting
  
  def default_setting
    # まだ作ってないテーブルを使った処理
    self.user_setting = UserSetting.new
  end
end

マイグレーションファイル内

User.skip_callback(:create, :before, :default_setting)
User.create(name: "hoge")