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