Question

Je ne sais pas si cela a été répondu avant.

des itinéraires personnalisés pour les utilisateurs. Si j'accès à l'utilisateur directement / utilisateurs / 5 tout fonctionne. Si je tente / profil ou même / utilisateurs / current_user avec autorisation déclarative j'obtiens « Impossible de trouver l'utilisateur sans ID »

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

Mon ApplicationController a

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

et mes authorization_rules a user.id aussi essayé 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'est-ce que je fais mal?

Était-ce utile?

La solution

Pour les itinéraires de type d'index personnalisé utiliser
filter_access_to: tous

Au lieu de
filter_resource_access

m'a fait aussi.

Autres conseils

J'utilise AuthLogic, mais pour autant que je sache « current_user » ne va pas être accessible par une route.

Vous devez vérifier, dans le contrôleur, si params [: id] == « CURRENT_USER » (comme une chaîne), puis faire une certaine logique sur cette base ... i.e.:

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

Un exemple très simpliste, mais il doit illustrer le type de logique que vous allez avoir besoin d'obtenir le current_user d'un itinéraire personnalisé. Vous pouvez aussi simplement tracer une route nommée pour current_user à son propre action du contrôleur, mais ce n'est pas très RESTful et que [le plus probable] dupliquent les fonctionnalités que vous avez déjà.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top