Стадия:Почему модели MongoId меняют свой объект object_id на цикл?
Класс включая Mongoid:
class Mission
include Mongoid::Document
include Mongoid::Timestamps
attr_accessor :distance
# ... other atts and methods ...
end
Проблема:
В Rails c
:
$ missions = Mission.all # => get all missions
$ missions[0].object_id # => 70264434234840
$ missions[1].object_id # => 70264410073940
# (for this example I will use only 2 records)
# Now look their object_ids on this loop:
$ missions.each {|m| puts m.object_id} # => 70264350130200, 70264359017780
# Second test with this example again:
$ for m in ms do puts m.object_id end # => 70264374331020, 70264374320260
object_id
не то же самое внутри и ou t цикла, и отличается и между двумя петлями. Так что если атрибут distance
установлен внутри кучки, то из его значения будет значение nil
.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
ActiveRecord и Mongoid: Эта проблема возникает только цикл с Mongoid, я испытал тот же самый пример с ActiveRecord и object_ids одинаковы внутри и снаружи контура.
Мой вычет:
Каждый раз, когда object_id
называется, другое значение возвращается. Я думаю Mongoid делает новый запрос к базе данных каждый раз, когда инстансовых миссия (missions[0]
), без использования экземпляра внутри missions
является сбор (Mongoid :: Критерии)
Вопросы:
- Почему это происходит? каждое объяснение приветствуется :)
- Как выполнить итерацию своих «объектов MongoId», сохраняя один и тот же экземпляр миссии внутри и снаружи цикла? (Как ActiveRecord сделать)
Спасибо @muIsTooShort, ты мой герой! :) .. Я понимаю разницу между 'object_id' vs' id', это было просто для объяснения примера. Спасибо. – CristianOrellanaBak