次のようなことを実行するメソッドがあります:
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
fe :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
。