【Rails】コールバックについて


基本的な事項ですが忘れやすいので備忘録かつ、まとめとして記事にすることにしました。
こちらでは初投稿です。よろしくお願いいたします。

【参考記事】
Railsのコールバック

コールバックとは?

モデルを保存、更新、削除後や削除前のタイミングで実行されるメソッドのこと指す。
例) 記事を投稿し保存後には〜をする。

before_save => #保存前
after_save => #保存後
after_update => #更新後
before_destroy => #削除前
after_destroy => #削除後

コールバック使用例

before_save(保存前)コールバック後にメソッド実行する例を挙げる。

user.rb
class << self
  before_save :downcase_email
  def downcase_email
     self.email = email.downcase
  end

上記コードはemail保存前に、大文字のローマ字がある場合、小文字に変換するメソッド。
他の分かりやすい例としては、

posts_controller.rb
class ShopsController < ApplicationController
  before_action :logged_in_user

上記はpostsコントローラーの各アクション前にログインユーザーであることを指定している。
通販で何か購入する時、ログインしていない場合はログインまたは会員登録を促されると思われるが、ログインユーザーでないため、弾かれる(before_action :logged_in_user)のもコールバックによりログインを要求しているものと言える。

学び

普段何気なく上記のメソッド(before_action)等は使用していると思われるが、改めて「Railsにおけるコールバックを端的に説明せよ」と言われるとビシッと答えられない初学者の方が意外に多いと思います(自分もそうです)。意味のないコードなどなく、それぞれが意味を持っているので、普段から自分が書いたコードについて自信を持って説明できるように学習を励んでいきたいと思いました。Railsはとっつきやすいと言われていますが、本当に理解して使いこなそうとするとかなり奥が深いものであることを学びました。