Frage

Ich weiß nicht, ob dies schon einmal beantwortet wurde.

Haben benutzerdefinierte Routen zu Benutzern. Wenn ich direkt auf den Benutzer zugriff /Benutzer /5 alles funktioniert. Wenn ich es versuche /Profil oder sogar /Benutzer /current_user mit deklarativer Autorisierung, erhalte ich "Ich kann keinen Benutzer ohne ID finden".

map.profile "profile", :controller => "users", :action => "show"
map.edit_profile 'profile/edit', :controller => 'users', :action => 'edit', :conditions => { :method => :get }

Mein Anwendungscontroller hat

vor_filter {| c | Autorisierung.Current_User = C.Current_User}

und meine Authorization_RULES hat user.id und ausprobiert Current_User.id.

role :user do
    includes :guest
    has_permission_on :users, :to => [:show, :edit ] do
    if_attribute :id => is { user.id }
  end
end

Was mache ich falsch?

War es hilfreich?

Lösung

Für benutzerdefinierte Indextyprouten verwenden Sie
filter_access_to: alle

Statt
filter_resource_access

Ich habe mich auch gehabt.

Andere Tipps

Ich benutze Authlogic, aber soweit ich weiß, wird "current_user" nicht über eine Route zugänglich sein.

Sie müssten im Controller prüfen, ob Params [: id] == "current_user" (als Zeichenfolge) und dann eine Logik basierend auf diesem ... dh:

if params[:id] == "current_user"
  @user_id = current_user.id
else
  @user_id = params[:id]
end
@user = User.find(@user_id)

Ein sehr simple Beispiel, aber es sollte die Art der Logik veranschaulichen, die Sie benötigen, um den Current_User von einer benutzerdefinierten Route zu holen. Sie können auch nur eine benannte Route für Current_User auf seine eigene Controller -Aktion zuordnen, aber das ist nicht sehr erholsam und würde [höchstwahrscheinlich] die Funktionalität, die Sie bereits haben, duplizieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top