2010-12-17 1 views
2

Je prévois d'utiliser l'autorisation déclarative dans une application Rails 3. J'ai les relations de modèle suivants:declaration_authorization et contexte utilisateur

class Role < ActiveRecord::Base 
    has_many :permissions, :dependent => :destroy 
    has_many :users, :through => :permissions, :uniq => true 
end 

class Permission < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :role 
    belongs_to :context 
end 

class User < ActiveRecord::Base 
    has_many :permissions, :dependent => :destroy 
    has_many :roles, :through => :permissions 

    roles.map do |role| 
     role.name.underscore.to_sym 
    end 
end 

class Context < ActiveRecord::Base 
    has_many :contexts, :dependent => :destroy 

end 

Le concept est ici que je vais segmenter différents ensembles de données dans différents contextes. Cependant, un utilisateur donné peut avoir des rôles différents pour chaque contexte - peut-être un administrateur dans un contexte et un utilisateur de base dans un autre. J'ai implémenté current_user et current_context pour les contrôleurs et les vues.

Je prévois d'utiliser if_attribute pour référencer l'autorisation de droite sur le jeu de données de droite. Cependant, la question est de savoir comment faire pour que les rôles_symboles def ne retournent que les rôles associés à l'utilisateur dans un contexte particulier lorsque je ne peux/ne devrais pas référencer current_context dans un modèle (où role_symbols est défini).

Des idées?

Répondre