我正在使用 CanCan 和 Devise 进行用户身份验证和权限。
用户可以为其帐户指定一个密钥持有者,他们将拥有不同的权限。密钥持有者有一个名为“access_id”的属性,与他们可以访问的帐户的 id 相同。我想要实现的是以下内容:
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
但是使用此代码,密钥持有者无法访问他们被指定访问的帐户。如何纠正代码以实现这一点?谢谢!