我正在使用CanCan &设计用户身份验证&权限。CanCan - 用户帐号的密钥持有者访问
用户可以为他们的账户提名一个持卡人,他们拥有不同的权限。密钥持有者有一个名为“access_id”的属性,它与他们可以访问的帐户的ID相同。我试图给acheive如下:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
if user.admin?
can :manage, :all
elsif user.keyholder?
can :read, Folder do |folder|
folder.try(:user) == user.access_id
end
else
can :create, :all
can :manage, :all do |all|
all.try(:user) == user
end
end
end
end
但有了这个代码,密钥持有者不能访问帐号被提名访问。我如何纠正代码来实现这一目标?谢谢!
'folder.try(:user)'可能在user.access_id是整数时返回一个用户对象。也许你应该解决这个问题? – 2013-02-28 18:28:05
我试着改变行:folder.try(:user.id)== user.access_id,但这仍然说,访问被拒绝 - 我如何正确地措词? – ecs 2013-02-28 18:31:58