【问题标题】:User does not have role after adding it - Cancancan & Rolify添加后用户没有角色 - Cancancan & Rolify
【发布时间】:2017-06-05 17:03:38
【问题描述】:

我正在使用带有 Cancancan 和 Rolify 的 Rails 5。当我向用户添加角色时,它将显示在他们的角色列表中,但在调用 has_role? 时将返回 false?

来自控制台的示例。

user = User.first 
user.roles # => []
user.add_role :admin 
user.has_role? :admin #=> false (what?!)
user.roles #=> [id: 1, name: "admin....

这里的任何帮助将不胜感激。不知道为什么这不起作用。谢谢!

【问题讨论】:

  • 添加角色后重新加载用户会怎样? user.add_role :admin; user.reload; user.has_role? :admin
  • 为什么你的roles 返回这样的数组? [id: 1, name: "admin...?它应该是多个role 对象的数组,是拼写错误还是关联错误?

标签: ruby-on-rails ruby admin cancancan rolify


【解决方案1】:

没有这种方法has_role?has_role? 只是用于 Rails 应用程序的辅助方法。 has_role? 有这个定义:

def has_role?(role)
    current_user && current_user.has_role?(role)
end

可以添加到您的应用程序助手中。 您可以像这样在 .erb 或 .rb 文件中调用此方法:

<% if has_role?(:admin) %> 

或:

if user.has_role? :admin

【讨论】:

    猜你喜欢
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多