2010-09-23 5 views

Répondre

9

J'ai réussi à obtenir et CanCan MongoId (version 2) de travailler ensemble assez bien sur un rails 3 app. Toujours obtenir quelques erreurs ici et là liées à des conditions dans la définition d'autorisation (le modèle Ability).

Je viens de mettre le contenu de ce point essentiel dans un fichier dans config/initializers:

Les hashes état sont presque les mêmes que ActiveRecord:

# can only manage own account 
can :manage, User, :_id => current_user.id 

Je travaille toujours sur la façon d'utiliser des conditions plus avancées de Mongoid :: Criteria, mais vous pouvez toujours utiliser un bloc pour faire des conditions plus complexes:

# can only manage own account 
can :eat, Cake do 
    current_user.jobs.any?{ |job| job.title == 'Peasant'} 
end 
+0

Merci. J'espère que vos extensions seront ajoutées à la future version de gem –

+0

De rien. Mongoid est génial, tout comme CanCan. Je vais essayer de mettre en place un patch de travail pour CanCan afin que ce comportement soit inclus dans la librairie sans avoir besoin d'ajouter quoi que ce soit. Par ailleurs, j'ai fait quelques mises à jour importantes de l'essentiel qui permettent des conditions de hachage complexes. Je recommande d'utiliser la dernière version de Gist, car la version que j'avais précédemment a causé quelques bogues difficiles à détecter mais significatifs. – bowsersenior

+1

Mes extensions l'ont transformé en Cancan. La dernière version sur github prend maintenant en charge Mongoid: https://github.com/ryanb/cancan/pull/172 et la version 1.5 de rubygems aura aussi le support de Mongoid. – bowsersenior