我的rails 4应用程序中有5个模型,并且使用cancancan gem我想只允许特定用户访问特定模型。
这意味着:
允许user1访问1,2模型
允许用户2访问3,4模型
允许用户3访问所有模型。
请指导我。
答案 0 :(得分:1)
您应该使用rolify with cancan来实现这一目标。您可以使用rolify指定某个角色来代表您的用户1"或"用户2"像这样:
sort()
和您的"用户3"可以访问所有内容的人可以是管理员
user = User.find(1)
user.add_role :limited_user_1
然后使用cancan就像检查user = User.find(3)
user.add_role :admin
是否具有指定的user
一样简单。在这种情况下,role
表示:manage
可以访问所有操作,例如user
,:read
,:create
,:update
。
:destroy
答案 1 :(得分:0)
Mike
答案的简单版本如下:
#app/models/ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
case user.role_id
when 1
can :read, Model
can :read, Model2
when 2
can :read, Model3
can :read, Model4
when 3
can, :manage, :all
end
end
end
您必须添加一种方法来定义User
是1
,2
,3
等,这就是为什么Mike
建议rolify
。