2014-01-16 2 views
0

Я изо всех сил пытаюсь переопределить имя атрибута в одной из моих моделей.Переопределение идентификатора в объекте JSON из mongodb

Я хотел бы вернуть объект на передний конец (через JSON) с полем id.

Теперь возникает проблема, что есть поле, называемое _id (сгенерированное mongo), от которого я не могу избавиться.

Я могу переопределить идентификатор, но все равно возвращается как _id.

[Object] 
0: Object 
$$hashKey: "007" 
_id: 123 

Я хотел бы, чтобы это было [Object] 0: Объект $$ hashKey: "007" ID: 123

Я пробовал много хэша манипуляций, отклонять, за исключением, и перекручиванием и не может просто переименовать поле или удалить его в этом отношении.

Благодаря

+2

вы не можете. Поле _id является обязательным во всех документах MongoDB (все созданные пользователем документы) –

ответ

0

Самый простой способ - переопределить метод as_json и удалить там хэш.

def as_json(*args) 
    super.tap { |hash| hash["id"] = hash.delete "_id" } 
end 
0

В поле "_id" является обязательным в MongoDB документов. The manual says:

Если документ не определяет поле _id, то MongoDB добавит поле _id и присвоить уникальный ObjectId для документа перед вставки. Большинство драйверов создают ObjectId и вставляют _id-поле, , но mongod будет создавать и заполнять _id, если приложение драйвера или этого не делает.

Таким образом, вы не сможете обойти этот путь.

Смежные вопросы