Я использую mongoid gem на проекте рельса, и я очень озадачен попыткой изменить модель в памяти, но никогда не сохраняю ее, поэтому я не изменяю db. Я пытаюсь изменить атрибут из модели, загруженной в памяти, но она не работает, как показано ниже:Как безопасно модифицировать модель памяти mongoid?
mymodel = MyModel.where('some criteria')
mymodel.first.some_attribute = 0
mymodel.first.some_attribute == 0 -> is false
Так что я думаю Монго перезагружается из БД каждый раз, когда мы первые или даже зацикливание на каждый вход и установка какого-либо атрибута не влияет, если я снова зациклю все атрибуты, которые я установил, по-прежнему устанавливается на исходное значение. Есть ли способ совершить транзакцию и заставить mymodel оставаться в памяти? Мне трудно использовать правильную терминологию, поэтому я надеюсь, что вы получите то, что я говорю.
Thx, это было мое наблюдение но я думал, что выполнение ms = M.where («некоторые критерии»); ms.each {...} будет перебирать экземпляры запроса, но он еще не разрешен и запрос выполняется каждый раз. –
'ms' был бы просто запросом в этом случае, а' ms.each {...} 'не выполняет автоматическое определение и не заполняет запрос, он просто выполняет запрос и выполняет итерации по результатам, как курсор; Я видел, что это вызывает интересные результаты, если вы изменяете при повторении (например, 'ms.each {| m | m.attr = 6; m.save}'), если у вас нет явного упорядочения, которое является постоянным на протяжении всей итерации. –