【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メソッドは完成です!