代码之家  ›  专栏  ›  技术社区  ›  user1136228

cancancan可以创建无法与条件哈希一起正常工作的权限

  •  3
  • user1136228  · 技术社区  · 10 年前

    我希望管理员用户能够为此帐户创建新用户,并从此帐户读取、更新用户。

    can [:create, :read, :update], User, id: account_users_ids
    

    如果account_users_ids不是空数组,则不工作。 我需要拆分权限才能正常工作

    can :create, User
    can [:read, :update], User, id: account_users_ids
    

    将条件定义为

    can [:create, :read, :update], User, id: account_user_ids
    

    谢谢

    1 回复  |  直到 10 年前
        1
  •  0
  •   cyber_dave    9 年前

    这可能有点晚,但在Ruby 2.0+中,您的条件哈希被解释为关键字参数,CanCanCan在本例中忽略了该参数。

    添加括号应使其按预期工作:

    can [:create, :read, :update], User, { id: account_user_ids }

    另请参见:

    关键字参数: https://robots.thoughtbot.com/ruby-2-keyword-arguments

    CanCan::Ability#can : https://github.com/CanCanCommunity/cancancan/blob/develop/lib/cancan/ability.rb#L132-L134