0
我正在嘗試使用CanCan來定義塊中的能力。在ability.rb我有權限定義爲:爲什麼塊中定義的CanCan總是返回true?
can [:create, :show], Comment do |comment|
if !group.nil?
is_a_group_member(current_user_group_member) == true
elsif user.admin?
is_a_user_admin(current_user)
end
end
不管這些總是返回true。但是,如果我將該功能寫入一行:
can [:create, :show], Comment if (!group.nil? && is_a_group_member(current_user_group_member) == true) || (user.admin? && is_a_user_admin(current_user))
當ability.rb權限使用一行時,它按預期工作。當我使用塊時,它總是返回true。任何想法或想法爲什麼這是打破?由於
在寶石的文檔中明確說明,您應該只對資源本身的條件使用塊 – apneadiving 2013-02-23 23:52:40
這是什麼意思? – AnApprentice 2013-02-24 00:26:28
'塊僅在實際實例對象存在時才被評估。在檢查類的權限時(例如在索引操作中),不會評估它。這意味着任何不依賴於對象屬性的條件都應該移動到塊之外。 ' – apneadiving 2013-02-24 08:44:39