JQ Blog

RailsのModelのコールバック

Active Recordのコールバック

Rails側では、内部でオブジェクトが作成されたり、更新されたり削除されたりする。コールバックとは、オブジェクトのライフサイクル期間における特定の瞬間に呼び出されるメソッドである。
コールバックを利用することで、Active Recordオブジェクトが作成、保存、更新、削除などのイベント発生の時に常に実行されるコードを書くことができる。

種類と順番

  • オブジェクトの生成

    • before_validation
    • after_validation
    • before_save
    • around_save
    • before_create
    • around_create
    • after_create
    • after_save
  • オブジェクトの更新

    • before_validation
    • after_validation
    • before_save
    • around_save
    • before_update
    • around_update
    • after_update
    • after_save
  • オブジェクトの削除

    • before_destroy
    • around_destroy
    • after_destroy
  • オブジェクトのinstance化

    • after_initialize
  • find

    • after_find
  • touch

    • after_touch

使い方

普通にモデルクラスの中に書いたら良い。

1
2
3
4
5
6
7
class Admin < ApplicationRecord
  before_validation :hoge

  def hoge
    "何かのコード"
  end
end
1
2
3
4
5
class Admin < ApplicationRecord
  before_validation do
    "何かのコード"
  end
end
1
2
3
class Admin < ApplicationRecord
  before_validation -> { "何かのコード" }
end

上の三つの書き方で自分が実行したい瞬間に実行されるコードを書くことができる。


参照

Active Record コールバック
Rails4でモデルのコールバックの一覧と順番
Railsのcallbackについて調べた
ActiveRecordのコールバックの順序・コールバック内のロールバック処理について