【Rails】before_actionメソッド
今回はまた便利な機能の紹介です。
一通り7つのアクションを定義し終えたコントローラーを
のぞいて見てみてください。
同じような記述がありませんか?
ありますね。
editアクションとshowアクションの定義がどちらも
@post = Post . find (params [ : id ] )
となってます。
ここでプログラミングあるあるのまとめちゃおう作戦です!
このときに使用するのが before_actionメソッド。
このメソッドを使用すると、各アクションが実行される前に
共通の処理を行うことができます。
なのでコントローラーファイルのクラスが定義されてるその中の
一番上に記述します。(上から処理されていくので)
before_action : set_post , only : [ :edit , :show ]
private
def set_post
@tweet = Tweet . find ( params[ :id ])
end
*新たに処理を実行させたいメソッドをprivateメソッドで作成する
→クラス外から呼び出されないように。
editとshowの2つのアクションの前に実行されるように
set_postというメソッドを定義しましょう。
onlyオプションやexceptオプションでどのアクションの実行前に
この処理を実行させるか制限をかけましょう。
そして忘れずに、元々定義していたeditアクションとshowアクションの
中身は空にしておきましょう。
これでbefore_actionメソッドは完成です!