Mongoid + RoR:在 create() 时初始化 _id

Mongoid + RoR: Initializing the _id while create()

我想从我的其中一条路线中获取 ID

POST user/:id

并使用该参数[:id] 创建对象。当 :id 用作 _id 时,我无意让我的应用程序生成/自动递增 :id。 我试过了:

    ObjectId("1").str

2015-04-23T14:22:14.888-0700 E QUERY    Error: invalid object id: length
at (shell):1:1. 

所以,我猜这与我的极短 :id(长度不是 12 个字节)有关。

一个更基本的问题:如何将 :id 转换为 BSON id?我对将 _id 设为整数不是特别感兴趣,BSON 字符串很适合我。

使用 Rails 创建对象(在本例中为用户)的默认路径是 POST /users。您可以自定义此路由,但不推荐这样做。所以发送 id 你想要的其他数据,你的 id 将被设置。

POST /users
{ _id: 123, name: "Maria" }

您可以使用

将整数 ID 转换为 BSON
BSON::ObjectId.from_data(123)

但我认为这在这种情况下没有用。