mongoid новый против сборки - PullRequest
       7

mongoid новый против сборки

3 голосов
/ 18 августа 2010

почему mongoid не вставляет id при вызове new для ассоциации, а вставляет id при вызове build для ассоциации?

Это ошибка или так работает в mongoid?

1 Ответ

2 голосов
/ 30 апреля 2011

это то же самое поведение, которое вы получаете с другими ORM, например SQLite ... #new не создает ID, потому что новый объект еще не был сохранен / сохранен!

Всякий раз, когда происходит сохранение, следующий доступный идентификатор используется для вновь сохраненного объекта ... это означает, что если у вас есть пара новых объектов, вы не можете назначить им идентификатор, пока они не будут сохранены, поскольку идентификатор зависит порядок их сохранения в ..

Идентификаторы MongoDB не увеличиваются как идентификаторы в базах данных SQL, но они содержат метку времени как часть ключа ... отсюда снова зависимость от порядка сохранения / сохранения объектов

Кроме того: идентификаторы имеют смысл только как ссылку на сохраненные объекты - вы можете создавать объекты с помощью #new и в конечном итоге не сохранять их - не имеет смысла присваивать идентификатор несохраненному объекту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...