before_filter パラメータ付き 質問する

before_filter パラメータ付き 質問する

次のようなことを実行するメソッドがあります:

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がシンボルではなく:idfe :project_id(また、:id別のモデルの場合はaも存在する)であることです。

この問題をどのように解決しますか? before_filter アクションにパラメータを追加するオプションはありますか (正しいパラメータを渡すため)?

ベストアンサー1

私は次のようにします:

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

おすすめ記事