通过Rails向Mongo用户授予角色

时间:2020-08-10 12:49:45

标签: ruby mongodb mongoid

我正在尝试通过Rails控制器将角色分配给mongo用户。 我知道我们可以像here那样为用户分配角色,但是我们需要更新整个用户。那么,有什么方法可以直接通过rails控制器运行类似于grantRole的查询吗?

1 个答案:

答案 0 :(得分:1)

db.grantRolesToUser是shell helper。您可以通过在外壳中键入其名称而不调用它来了解其实现方式:

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模型类。