обновить встроенные документы mongodb с mongoid - PullRequest
0 голосов
/ 27 июля 2010

У меня проблема с обновлением встроенных документов в mongodb.У меня есть следующий сценарий.Модель пользователя имеет адрес в качестве встроенных документов.Я могу встраивать адрес в родительскую модель т.е.Пользовательская модель, но я все еще не могу понять, как обновить встроенный адрес, хотя у меня есть _id встроенного адреса

Пожалуйста, помогитеСпасибо

Ответы [ 2 ]

2 голосов
/ 27 июля 2010

Вы должны извлечь внедренный документ из родительского документа и затем выполнить операцию обновления, например:

address = user.address
address.update_attributes(:street => "foo")
1 голос
/ 05 ноября 2010

Есть другое решение. Если между классами 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"
...