使用Rails进行Cancan身份验证

时间:2011-01-25 13:10:19

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-plugins cancan

我有一个复杂的身份验证方案,我想出了这个模型结构。

see model structure

任何人都可以指导如何使用cancan嵌入使用此结构的身份验证。

2 个答案:

答案 0 :(得分:0)

def initialize (user)
    user ||= User.new # Guest user
        user.roles.each do |role|
      role.permissions.each do |p|
        can :read, p.resource.class_name.to_s.classify.constantize do |subject|
          p.resource.class_name == subject.id and p.can_read
        end
        can :create, p.resource.class_name.to_s.classify.constantize do |subject|
          p.resource.class_name == subject.id and p.can_create
        end
        can :update, p.resource.class_name.to_s.classify.constantize do |subject|
          p.resource.class_name == subject.id and p.can_update
        end
        can :destroy, p.resource.class_name.to_s.classify.constantize do |subject|
          p.resource.class_name == subject.id and p.can_delete
        end
      end
    end
end

答案 1 :(得分:0)

p.resource.class_name == subject.id and p.can_read
    end
    can :create, p.resource.class_name.to_s.classify.constantize do |subject|
      p.resource.class_name == subject.id and p.can_create
    end
    can :update, p.resource.class_name.to_s.classify.constantize do |subject|
      p.resource.class_name == subject.id and p.can_update