2010-07-27 8 views
0

mongodb에 포함 된 문서를 업데이트하는 데 문제가 있습니다.
다음 시나리오가 있습니다. 사용자 모델에 주소가 포함 된 문서가 있습니다.
부모 모델에 주소를 임베드 할 수 있습니다. 사용자 모델하지만 난 여전히 주소가 i가 포함 된 주소의 _id
임베디드 문서 mongodb를 mongoid로 업데이트

후 부모로부터 포함 된 문서를 검색 할 수
감사

답변

2

당신은이를 도와주세요에도 불구하고 임베디드 업데이트하는 방법을 알아낼 질수 업데이트 작업을하십시오. 예 :

address = user.address 
address.update_attributes(:street => "foo") 
+0

답장 jpemberthy, 에 대해 고마워요.하지만 여전히 저에게는 효과가 없습니다. 분명히 내 개발 로그에 다음과 같이 볼 수 있습니다 project_name_development [ 'people']. ({ "_ id"=> BSON :: ObjectID ('4c5106b6f1936f036c000008'), "address._id"=> "4c5106b6f1936f036c000006"}, "$ set"=> { "address.city"=> "bhaktapur", "address.province"=> "kathmandu"}}) 주소를 업데이트해야한다고 생각합니다. 그리고 내 person 모델에서 "address.update_attributes (address_attribute)"가 있습니다. address_attribute는 주소의 해시입니다. 뭔가 빠졌습니까? – Gagan

+0

나는 그때 무슨 일이 일어날 지 모르겠다. 원할 경우, 콘솔 흐름과 모델 코드를 요점에 붙여 넣으십시오. 그러면 도움이 될 것입니다. – jpemberthy

+0

답장을 보내 주셔서 감사합니다. 나는 그것이 업데이트되지 않도록 내 모델에 오류가 있다는 것을 알아 냈다. 다시 한 번 감사합니다 – Gagan

1

다른 해결책이 있습니다. Person 클래스와 Preference 클래스 사이에 다 대다 관계가 있다면,

ruby-1.9.2-p0 > Person.count 
=> 0 
ruby-1.9.2-p0 > Preference.count 
=> 0 
ruby-1.9.2-p0 > person = Person.create 
=> #< Person _id: 4cd353e92b58af214b000006, preference_ids: []> 
ruby-1.9.2-p0 > pref = Preference.create 
=> #< Preference _id: 4cd353ee2b58af214b000007, person_ids: [], name: nil> 
ruby-1.9.2-p0 > 
ruby-1.9.2-p0 > person.preferences << pref 
=> true 
ruby-1.9.2-p0 > Preference.first.people.count 
=> 1 
ruby-1.9.2-p0 > Person.first.preferences.count 
=> 1 
ruby-1.9.2-p0 > 
ruby-1.9.2-p0 > person.preferences.first.name = 'foobar' 
=> "foobar" 
ruby-1.9.2-p0 > person.preferences.first.save 
=> true 
ruby-1.9.2-p0 > pref.reload 
=> #< Preference _id: 4cd353ee2b58af214b000007, person_ids: [BSON::ObjectId('4cd353e92b58af214b000006')], name: "foobar"> 
ruby-1.9.2-p0 > pref.name 
=> "foobar"