Domanda

Non so se questo è stato risposto prima.

Ha percorsi personalizzati per gli utenti. Se ho accedere direttamente l'utente / utenti / 5 funziona il tutto. Se provo / profile o addirittura / utenti / current_user con dichiarativa Autorizzazione ottengo "Impossibile trovare l'utente senza un ID"

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

Il mio ApplicationController ha

before_filter {| c | Authorization.current_user = c.current_user}

e le mie authorization_rules ha user.id e current_user.id anche provato.

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

Che cosa sto facendo di sbagliato?

È stato utile?

Soluzione

Per i percorsi di tipo indice personalizzato utilizzare
filter_access_to:

Invece di
filter_resource_access

mi ha fatto troppo.

Altri suggerimenti

Io uso Authlogic, ma per quanto ne so "current_user" non sta per essere accessibile attraverso un percorso.

Si avrebbe bisogno di controllare, nel controllore, se params [: id] == "CURRENT_USER" (come una stringa) e poi fare un po 'di logica in base a che ... cioè:

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

Un esempio molto semplicistico, ma dovrebbe illustrare il tipo di logica che si sta andando ad avere bisogno di ottenere il current_user da un percorso personalizzato. Si potrebbe anche solo tracciare un percorso chiamato per current_user alla sua propria azione di controllo, ma non è molto riposante e sarebbe [probabilmente] funzionalità duplicati che già avete.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top