[Rails]before actionの使用


before actionはメソッドを呼び出すしかないと思っていた先日の私...
権限を処理するときは、パラメータとしてbefore actionに権限を渡したいです.
もしかするとbefore actionでもパラメータを渡すことができるのでしょうか...?冗談半分に本気で探したことがある.
before actionもパラメータを渡すことができたので衝撃を受けました・・・

そこで今日はRailsでbefore actionの使い方をまとめることにしました.

before actionは?


すべてのアクションが実行される前に実行されるフィルタ
基本文法は以下の通りです.
before_action :method
実際のコントローラに適用する場合は、コントローラファイル名の下に明記するだけです.
class TestController < ApplicationController
	before_action :test
end
このように使用すると、他の動作が発生する前にtestメソッドが最初に実行されます.

特定の動作でのみ使用(only)


特定の動作でのみメソッドを実行したい場合は、onlyを後に付けることができます.
before_action :메소드, only: [:액션]
onlyの後でアクションを指定する場合は、構成部品、文字列、%wなど、さまざまな方法を使用できます.

  • 構成部品使用before_action :test, only: [:show]

  • 文字列before_action :test, only: ["show"]を使用

  • %w使用before_action :test, only: %w[show]
  • 特定のアクションでのみ無効(除外)


    特定の動作のみでメソッドを実行したくない場合は、後に「除外」を付けることができます.
    before_action :메소드, except: [:액션] 
    この方法はonlyと同様に、素子、文字列、および%wなどの様々な方法で使用することもできる.
    しかし、見ているだけでは毒性が低下するため、除外されているものを多く使うことはありません.

    特定の条件でのみ使用します(場合を除きます)。


    特定の条件下でのみ使用できる方法にはif、exit、proc、lambaなど多くの選択肢があります.

  • ifbefore_action :메소드, if: :메소드オプションを「」と書くと、メソッドがtrueの場合にのみbefore actionが実行されます.

  • unlessbefore_action :메소드, unless: :메소드メソッドがfalseの場合にのみbefore actionが実行されます.
  • もし、[除外](None)を使用する場合は、メソッドではなくコードを直接入れることができます.コードを挿入できる方法はprocとlambaの2つです.

  • proc
    、などのオプションを指定しない限り、メソッドではなくprocを使用してコードを指定できます.before_action :메소드, if: proc {current_user.id == 1}これにより、現在のプレイヤーのIDが1の場合、メソッドを実行することができる.

  • lamdbabefore_action :메소드, if: -> {current_user.id == 1}これにより、上述したprocと全く同じ条件で動作する.
  • パラメータをスキップ

    before_action -> { 메소드(파라미터) }
    これにより、before actionで実行されるメソッドにパラメータを渡すことができます.

    🙇🏼‍♀️ リファレンス


    【Rails】before_action的使用方法とオプションについて