概要
コントローラのなかで処理を共通化したい場合の方法をしてbefore_action
を使うことを学んだので、
その方法をメモします。
方法
- idからDBを一つ取得する処理を共通化する
privateに共通化する処理を記述
private
def set_question
@question = Question.find(params[:id])
end
before_actionを記述
class QuestionsController < ApplicationController
before_action :set_question
end
実行するアクションを指定したい場合はonlyオプション
を追加で記述
class QuestionsController < ApplicationController
before_action :set_question, only: [:show, :edit, :destroy, :update]
end
実行しないアクションを指定する場合はexceptオプション
を追加で記述
class QuestionsController < ApplicationController
before_action :set_question, except: [:index]
end