Rails: 使用 Devise、Cancan 和 Rolify 通过用户获取角色名称

3

我可以轻松地测试用户是否具有特定的角色:

if user.has_role? :admin

如何获取用户的角色名称? 类似这样:

users = User.all
user.each{ |user|
  puts user.role or users.role_name  ?
}

用户模型
class User < ActiveRecord::Base
  rolify
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me ,:username,:first_name,:last_name
  # attr_accessible :title, :body
end

榜样
class Role < ActiveRecord::Base
  has_and_belongs_to_many :users, :join_table => :users_roles
  belongs_to :resource, :polymorphic => true
  attr_accessible :name,:id
  scopify
end
1个回答

7

您可以使用

user.roles.first.name

我得到的角色名称是["admin"],那么只需要admin怎么样? - wwli
你是否总是对第一个角色感兴趣?还是每个用户只有一个角色? - usha
我想要为每个用户显示角色名称(不同的用户有不同的角色)。 - wwli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接