저는 레일 프로젝트에 몽고이 보석을 사용하고 있습니다. 메모리에서 모델을 수정하려고 시도했지만, DB를 수정하지 않으므로 결코 저장하지 않으려 고합니다.메모리 몽고 모델에서 안전하게 수정하는 방법은 무엇입니까?
mymodel = MyModel.where('some criteria')
mymodel.first.some_attribute = 0
mymodel.first.some_attribute == 0 -> is false
그래서 나는 dB에서 우리가 처음 또는 각 항목에 반복 할 때마다 몽고 다시로드를 추측 : 울부 짖는 소리 같이 나는 메모리에로드 모델에서 속성을 수정하기 위해 노력하고있어하지만이 작동하지 않습니다 일부 속성을 설정해도 효과가 없습니다. 설정 한 모든 속성을 다시 반복하면 원래 값으로 설정됩니다. 트랜잭션을 커밋하고 mymodel이 메모리에로드되도록 강제 할 수있는 방법이 있습니까? 적절한 용어를 사용하기가 어렵 기 때문에 내가 말하는 것을 얻을 수 있기를 바랍니다. 두 개의 완전히 다른 모델 인스턴스를 생성하는 데이터베이스에
M.first
M.first
두 개의 안타 : first
를 호출
Thx, 그건 내 관찰이었다. 하지만 나는 ms = M.where ('일부 기준')을하고 있다고 생각했다. ms.each {...}는 쿼리 인스턴스를 반복하지만 아직 해결되지 않았으며 매번 쿼리가 실행됩니다. –
'ms'는 그 경우에 질의 일 뿐이며'ms.each {...} '는 질의를 자동 해결하고 숨기지 않고 쿼리를 실행하고 커서와 같은 결과를 반복합니다. 반복을 통해 일정한 명시적인 순서가 없으면 반복하는 동안 (예 :'ms.each {| m | m.att.r; 6; m.save} ') 수정하는 경우 흥미로운 결과가 발생합니다. –