✨
`before_action` の後に続くオプション
before_action
の後に続くオプションには便利なものがいくつかあります。これらを活用することで、より柔軟で効率的なコードを書くことができます。以下は、覚えておくと便利なオプションです。
only
オプション
1. 特定のアクションでのみ before_action
を適用するためのオプションです。
before_action :set_user, only: [:show, :edit, :update]
用途: 特定のアクションだけにフィルタを適用したい場合。
except
オプション
2. 特定のアクション以外で before_action
を適用するためのオプションです。
before_action :authenticate_user!, except: [:index, :show]
用途: 一部のアクションを除いてフィルタを適用したい場合。
if
オプション
3. 条件が true
のときにだけ before_action
を実行します。
before_action :check_admin, if: -> { current_user.admin? }
用途: 条件が満たされた場合にのみフィルタを適用したい場合。
unless
オプション
4. 条件が false
のときにだけ before_action
を実行します。
before_action :set_locale, unless: -> { params[:locale].nil? }
用途: 条件が満たされていないときにのみフィルタを適用したい場合。
5. 複数の条件を使う
複数のオプションを組み合わせることもできます。
before_action :set_data, only: [:show, :edit], if: -> { current_user.active? }
用途: 特定のアクションかつ特定の条件でフィルタを適用したい場合。
6. カスタムメソッド内でのオプション
独自の条件ロジックをメソッド内に記述することで、複雑な条件を判定できます。
before_action :custom_method, if: :some_custom_condition?
private
def some_custom_condition?
# 任意の条件
params[:id].present? && current_user.admin?
end
用途: より複雑な条件をチェックしたい場合。
これらのオプションを活用すると、コードを整理し、適用する条件を制御しやすくなります。
Discussion