1

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

ユーザーへのカスタムルートを用意します。ユーザーに直接アクセスすると/users/5すべてが機能します。宣言型認証で/profileまたは/users/ 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

私は何が間違っているのですか?

4

2 に答える 2

3

カスタムインデックスタイプのルートの場合は、
filter_access_to:allを使用します


filter_resource_accessではなく

私も手に入れました。

于 2011-05-05T17:46:28.117 に答える
1

私は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の名前付きルートをそれ自体のコントローラーアクションにマップすることもできますが、それはあまりRESTfulではなく、[ほとんどの場合]既に持っている機能を複製します。

于 2010-06-05T20:22:17.140 に答える