Pregunta

No sé si esto ha sido respondido antes.

Tener rutas personalizadas para los usuarios. Si accedo al usuario directamente /usuarios /5 todo funciona. Si intento /perfila o incluso /usuarios /current_user con autorización declarativa, obtengo "no podría encontrar el usuario sin una identificación"

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

Mi Application Controller tiene

antes_filter {| c | Authorization.Current_user = C.Current_user}

y mi autorización_rules tiene user.id y también probé current_user.id.

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

¿Qué estoy haciendo mal?

¿Fue útil?

Solución

Para rutas de tipo de índice personalizado, uso
filter_access_to: todos

Más bien que
filter_resource_access

me tengo también.

Otros consejos

Utilizo AuthLogic, pero hasta donde sé, "Current_User" no será accesible a través de una ruta.

Debería verificar, en el controlador, si params [: id] == "current_user" (como una cadena) y luego hacer algo de lógica en función de eso ... es decir:

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

Un ejemplo muy simplista, pero debe ilustrar el tipo de lógica que necesitará para obtener el actual_user de una ruta personalizada. También podría asignar una ruta nombrada para Current_User a su propia acción del controlador, pero eso no es muy reparador y [probablemente] [probablemente] duplicará la funcionalidad que ya tiene.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top