我正在尝试使用CanCan来定义块中的能力。在ability.rb中,我将权限定义为:
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
无论什么,这总是回归真实。但是,如果我在一行中写下这个能力:
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。关于为什么会破坏的任何想法或想法?感谢
答案 0 :(得分:0)
if
... else
部分是一个表达式,如果条件为假,则评估为nil
,如果条件为真,则评估为条件代码评估为。
在您的情况下,在多行if
中,如果!group.nil?
为真,则返回is_a_group_member(current_user_group_member) == true
。如果user.admin?
为真,则返回is_a_user_admin(current_user)
。因此,如果其中任何一个为真,则返回true
。