Rails 7 - アクションのインラインコードのみを使用して before アクションを実行する方法
概要
Ruby 3.2.2 を搭載した Rails 7.1 で、特定のアクションに対してのみインライン コードを使用して before_action フィルターを実行するための正しい構文は何ですか?
インラインメソッドを使用した「Before action」で提案されているすべてを試しましたが、常にエラーが発生します。
before_action only: :destroy, { authorize!(with: AllowAllPolicy) }
before_action only: [:destroy], { authorize!(with: AllowAllPolicy) }
before_action { authorize!(with: AllowAllPolicy) }, only: :destroy
before_action { authorize!(with: AllowAllPolicy) }, only: [:destroy]
before_action { authorize!(with: AllowAllPolicy), only: :destroy }
before_action { authorize!(with: AllowAllPolicy), only: [:destroy] }
before_action(only: :destroy, { authorize!(with: AllowAllPolicy) })
before_action(only: [:destroy], { authorize!(with: AllowAllPolicy) })
解決策
あなたはとても近くにいました。カンマのない最初のオプションは、優先順位の問題を解決するための小さな調整を加えたもので、次のいずれかを行います。
before_action(only: :destroy) { authorize!(with: AllowAllPolicy) }
## or
before_action only: :destroy do
authorize!(with: AllowAllPolicy)
end