지금 당분간 문제를 쫓아 왔지만 여전히 무슨 일이 일어나고 있는지 파악할 수 없습니다.과 같은 일반적인 퍼시스턴스 메소드를 통해 내 보석으로 만든 문서를 편집하거나 속성을 편집하고 save
으로 호출 할 수 없습니다. 호출 예를 들어일반적인 영속성 방법을 사용하여 mongoid를 통해 레일스 모델의 속성을 업데이트하십시오.
:
Scram::Policy.where(id: a.id).first.update!(priority: 12345)
가 (이 오류가 없지만, 문서를 업데이트하지 않았습니다) 전혀 작동하지 않습니다
. 그러나 다음은 잘 작동합니다 :Scram::Policy.collection.find({ "_id" => a.id }).update_one( { "$set" => {"priority" => 12345}})
내가 잘못 뭘하는지 모르겠습니다. 다른 모델에서 업데이트 및 저장을 호출하면 정상적으로 작동합니다. 해당 문서가 내 보석에서 가져온 것입니다. https://github.com/skreem/scram/blob/master/lib/scram/app/models/policy.rb
포함 된 문서를 편집 할 수 없습니다 (대상). 나는 깨끗한 가짜 레일 응용 프로그램에 전체 보석을 재 구현하려고했습니다 https://github.com/skreem/scram-implementation/blob/master/lib/scram/lib/scram/app/models/policy.rb
: 나는 store_in
매크로 제거하고, 이러한 클래스를 다시 구현할 가짜 응용 프로그램에 inverse_of
및 class_name
를 사용하여 사용하는 어떤 클래스 정확히 지정 시도 https://github.com/skreem/scram-implementation
이 mongoid가 포함 된 문서를 관련된에 문제가, 아니면 내 코드에서 실종 몇 가지 작은 복잡함이있다 :
콘솔 업데이트가 작동하지 않는 방법을 보여줍니다 레일이 실행 중?
편집 : 이상하게
require "scram.rb"
Mongoid.load!('./spec/config/mongoid.yml', :test)
Scram::Policy.first.update!(priority: 32) #=> doesn't update the document at all
Scram::Policy.where(id: "58af256f366a3536f0d54a61").update(priority: 322) #=> works just fine
, 다음이 작동하지 않습니다 : Scram::Policy.where(id: "58af256f366a3536f0d54a61").first.update(priority: 322)
을 문제는 당신이 나의 보석 (스크 램)의 루트에서 irb
를 실행하고 다음 실행하면 계속
first
은 내가 원하는 것을 검색하지 않는 것 같습니다. 동등 비교를 수행하면 첫 번째 문서가 where
쿼리에서 반환 된 첫 번째 문서와 동일하다는 것을 알 수 있습니다.