我正在使用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