通过 rails 向 mongo 用户授予角色

Grant roles to mongo users via rails

我正在尝试通过 rails 控制器将角色分配给 mongo 用户。 我知道我们可以如前所述 here 为用户分配角色,但我们需要更新整个用户。那么有没有办法直接通过rails控制器运行类似grantRole的查询呢?

db.grantRolesToUser 是一个 shell helper。您可以通过在 shell 中键入它的名称但不调用它来了解它是如何实现的:

MongoDB Enterprise ruby-driver-rs:PRIMARY> db.grantRolesToUser
function(username, roles, writeConcern) {
    var cmdObj = {
        grantRolesToUser: username,
        roles: roles,
        writeConcern: writeConcern ? writeConcern : _defaultWriteConcern
    };
    var res = this.runCommand(cmdObj);
    if (!res.ok) {
        throw _getErrorWithCode(res, res.errmsg);
    }
}

可以看到它使用了runCommand.

运行 任意命令的 Ruby 机制是 documented here

然后你会做这样的事情:

 client.database.command(grantRolesToUser: username, roles: ['foo'])

要获取客户端实例,请使用 Foo.collection.client,其中 Foo 是 Mongoid 模型 class。