rails 技術ブログ

rails 技術ブログ

勉強したことをアウトプットしていきます

【rails】コールバックを起動する条件を設定したい

コールバックとは?

ある特定の瞬間に呼び出されるメソッドのこと。
例えば、「ユーザー登録する際、createする前にこの処理を実行したい」などという時にコールバックが使われます。

コールバック一覧
オブジェクトの作成 概要
before_validation バリデーションが行われる直前で実行される
after_validation バリデーションが行われた直後に実行される
before_save バリデーションに成功し、オブジェクトがDBに保存される直前に実行される
around_save バリデーションに成功し、オブジェクトがDBに保存されている最中に実行される
before_create バリデーションに成功し、オブジェクトがDBに保存される直前に実行される
around_create バリデーションに成功し、オブジェクトがDBに保存されている最中に実行される
after_create バリデーションに成功し、オブジェクトがDBに保存された直後に実行される
after_save after_create / after_update の直後、データベースへの COMMIT の直前に実行される
after_commit/after_rollback after_save の後(データベースに COMMIT された後)に実行される
オブジェクトの更新 概要
before_validation バリデーションが行われる直前で実行される
after_validation バリデーションが行われた直後に実行される
before_save バリデーションに成功し、オブジェクトがDBに保存される直前に実行される
around_save バリデーションに成功し、オブジェクトがDBに保存されている最中に実行される
before_update DBが更新される直前に実行される
around_update DBが更新されている最中に実行される
after_update DBが更新された直後に実行される
after_save after_create / after_update の直後、データベースへの COMMIT の直前に実行される
after_commit/after_rollback after_save の後(データベースに COMMIT された後)に実行される
オブジェクトのdestroy 概要
before_destroy DBのデータがdestroyされる直前に実行される
around_destroy DBのデータがdestroyされている最中に実行される
after_destroy DBのデータがdestroyされた直後に実行される
after_commit/after_rollback after_save の後(データベースに COMMIT された後)に実行される
コールバックを起動する際、条件を付けたいときは?

:ifもしくは:unlessオプションをつけることで条件を指定することができます。

class User < ApplicationRecord
  before_save :downcase_email, if: :email_upcase?
end
#シンボルを使って実装すると上記のようになる



■参考にした記事

Active Record コールバック - Railsガイド

Railsのコールバックまとめ | TECHSCORE BLOG

www.amazon.co.jp