[Ruby on rails][ before_action] コントローラーのアクションが実行される前にメソッドを実行
controller.phpでbefore_action :メソッド名と記述すると、
一番最初にそのメソッドの処理を実行できる。
コントローラーのアクションが実行される前にそのメソッドを実行できる。
オプションのonlyやexceptを記述すると、
before_actionで実行することをアクションごとに管理できる。
たとえば
app/controllers/samples_controller.rbで
class SamplesController < ApplicationController before_action :hoge, except: :index # indexアクション以外が実行される前にhogeが実行される。 def index @samples = Sample.page(params[:page]).per(5).order("created_at DESC") end private def hoge 命令 end end
ここでonly使うのが良い説もある。
新しいアクションが追加されても影響がないからだ。
# only: を使った場合
before_action :hoge, only: [:show, :new, :create, :edit, :update, :destroy]
# except: を使った場合
before_action :hoge, except: :index
たしかに、exceptを使うと、何に適用されつつ、どんな動きのためか把握しづらい。なるほど