我只是想知道我是否可以使用include?这个地方与否的方法,这里使用包含方法是否合适?
我有一个Users表和一个Roles表,b / w user&中有many_to_many关系。角色。 现在我想检查用户的角色。 像这样的东西:
1。使用include
这是假的,而我期待是真的,因为用户有管理员角色。
def isadmin(user)
user.roles.include?("admin")
end
2。没有包含
此解决方案对我有用,但我想了解包含。
def isadmin(user)
for role in user.roles
if role.name == "admin"
return true
end
end
false
end
注意:我已将此角色分配给我正在检查其角色的用户。
#<Role id: 1, name: "admin", created_at: "2014-12-07 07:45:42", updated_at: "2014-12-07 07:45:42">
答案 0 :(得分:0)
第一个不起作用,因为您正在将一个role
对象数组与一个字符串进行比较。你想要这样的东西:
user.roles.map(&:name).include?('admin')