我们可以使用“包含”吗?在这种情况下?

时间:2014-12-08 16:11:49

标签: arrays ruby-on-rails-4

我只是想知道我是否可以使用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">

1 个答案:

答案 0 :(得分:0)

第一个不起作用,因为您正在将一个role对象数组与一个字符串进行比较。你想要这样的东西:

user.roles.map(&:name).include?('admin')