通过 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。
我正在尝试通过 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。