1. ホーム
  2. ruby-on-rails

[解決済み] パラメータ付きbefore_filter

2023-05-07 10:30:16

質問

以下のようなメソッドがあります。

before_filter :authenticate_rights, :only => [:show]

def authenticate_rights
  project = Project.find(params[:id])
  redirect_to signin_path unless project.hidden
end

このメソッドを他のコントローラでも使いたいので、application_controllerに含まれるヘルパーにメソッドをコピーしました。

問題は、いくつかのコントローラで、プロジェクトのIDが :id シンボルではなく、例えば :project_id (とか(また :id が存在する場合(別のモデルの場合)

before_filterアクションにパラメータを追加するオプションはありますか(正しいパラメータを渡すために)?

どのように解決するのですか?

私ならこうします。

before_filter { |c| c.authenticate_rights correct_id_here }

def authenticate_rights(project_id)
  project = Project.find(project_id)
  redirect_to signin_path unless project.hidden
end

ここで correct_id_here にアクセスするための関連した ID です。 Project .