Ruby on rails 3.2 如何使用rolify返回角色名称字符串

Ruby on rails 3.2 如何使用rolify返回角色名称字符串,ruby-on-rails-3.2,rolify,Ruby On Rails 3.2,Rolify,我试图以以下格式返回用户拥有的所有角色的名称: “角色名称1”、“角色名称2”、“角色名称3” 这样我就可以让用户拥有所有的角色了?来自rolify的方法 我尝试过收集这样的角色名称: user.roles(:select => :name).collect(&:name) 但这将返回一个数组: [“角色名称1”、“角色名称2”、“角色名称3”] 你有所有的角色吗?方法希望它们是这样的: user.roles(:select => :name).collect(&:

我试图以以下格式返回用户拥有的所有角色的名称:

“角色名称1”、“角色名称2”、“角色名称3”

这样我就可以让用户拥有所有的角色了?来自rolify的方法

我尝试过收集这样的角色名称:

user.roles(:select => :name).collect(&:name)
但这将返回一个数组:

[“角色名称1”、“角色名称2”、“角色名称3”]

你有所有的角色吗?方法希望它们是这样的:

user.roles(:select => :name).collect(&:name)
user.has_all_roles?('rolename1'、'rolename2'、'rolename3')


我确信我遗漏了一些非常简单的东西。

将collect的结果捕获到一个变量,并将捕获的数组转换为一个参数列表

roles = user.roles(:select => :name).collect(&:name)
user.has_all_roles?(*roles)

将collect的结果捕获到一个变量,并将捕获的数组转换为参数列表

roles = user.roles(:select => :name).collect(&:name)
user.has_all_roles?(*roles)

自Rails 5.1以来,方法
user.roles(:select=>:name)
会给出以下错误:

ArgumentError: wrong number of arguments (1 for 0)
要修复它,我们只需执行
@user.roles.pull(:name)


如果您想要一个名称为concatenated的字符串,我们只需执行
@user.roles.pull(:name).join(“,”)
,因为Rails 5.1方法
user.roles(:select=>:name)
会给您以下错误:

ArgumentError: wrong number of arguments (1 for 0)
要修复它,我们只需执行
@user.roles.pull(:name)

如果您想要一个名称为coma separated的字符串,我们只需执行
@user.roles.pull(:name.join(“,”)