質問

これが以前に答えられたかどうかわからない。

ユーザーへのカスタムルートがあります。ユーザーに直接アクセスすると /ユーザー /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の名前付きルートを独自のコントローラーアクションにマッピングすることもできますが、それはあまり安らかではなく、既に持っている機能性を複製する可能性が高いです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top