LoginSignup
0
0

More than 3 years have passed since last update.

[Rails] コールバックについて

Posted at
1 / 2

対象読書

コールバックって何?という方

コールバックとは

コールバックとは、オブジェクトのライフサイクル期間における特定の瞬間に呼び出されるメソッドのことです。コールバックを利用することで、Active Recordオブジェクトが作成/保存/更新/削除/検証/データベースからの読み込み、などのイベント発生時に常に実行されるコードを書くことができます。

引用:Active Record コールバック

個人の解釈としては、例えば、ある商品に対してコメントする際に、createアクションが動くけど、このcreateアクションの前後で何か一手間加えたいな、って思った時にこの”前後”の一手間のこと

alt

利用可能なコールバック

Active Recordで利用可能なコールバックの一覧です。

オブジェクトの作成

before_validation
after_validation
before_save
around_save
before_create
around_create
after_create
after_save
after_commit/after_rollback

オブジェクトの更新

before_validation
after_validation
before_save
around_save
before_update
around_update
after_update
after_save
after_commit/after_rollback

オブジェクトのdestroy

before_destroy
around_destroy
after_destroy
after_commit/after_rollback

コールバックの実行(trigger)

create
destroy
save
update
valid? など

例えば

実用的でないですが、例として
ユーザーが投稿(comment)を行ったら、commentsテーブルのtextカラムに保存されるデータの最後に「!!」を自動で追加するというコードは以下の通り。

class Post < ApplicationRecord
  before_create :change_comment

  def change_comment
    self.text = text + "!!"
  end
end

comments_controller.rbでのcreateアクション内で、createトリガーが発火した時にchange_commentのコールバックが呼ばれ、結果として"!!" が付与されてDBに登録(INSERT)される仕組みです。
(self.textとしているのは、セッターメソッドだからです。)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0