カスタムルートと宣言的な承認
-
24-10-2019 - |
質問
これが以前に答えられたかどうかわからない。
ユーザーへのカスタムルートがあります。ユーザーに直接アクセスすると /ユーザー /5すべてが機能します。宣言的な許可を備えたプロファイルまたは /均一 /current_userを試してみると、「IDなしでユーザーが見つかりませんでした」
map.profile "profile", :controller => "users", :action => "show"
map.edit_profile 'profile/edit', :controller => 'users', :action => 'edit', :conditions => { :method => :get }
私のApplicationControllerにはあります
before_filter {| c | authorization.current_user = c.current_user}
そして、私のauthorization_rulesにはuser.idがあり、current_user.idを試しました。
role :user do
includes :guest
has_permission_on :users, :to => [:show, :edit ] do
if_attribute :id => is { user.id }
end
end
私は何が間違っているのですか?
解決
カスタムインデックスタイプのルートを使用します
filter_access_to:すべて
それよりも
filter_resource_access
私も手に入れました。
他のヒント
私はauthlogicを使用していますが、私が知っている限り「current_user」はルートからアクセスできません。
コントローラーで、params [:id] == "current_user"(文字列として)を確認し、それに基づいてロジックを実行する必要があります。
if params[:id] == "current_user"
@user_id = current_user.id
else
@user_id = params[:id]
end
@user = User.find(@user_id)
非常に単純な例ですが、カスタムルートからcurrent_userを取得するために必要なロジックのタイプを説明する必要があります。また、current_userの名前付きルートを独自のコントローラーアクションにマッピングすることもできますが、それはあまり安らかではなく、既に持っている機能性を複製する可能性が高いです。
所属していません StackOverflow