Есть еще одно решение. Если между классами 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"
спасибо за ответ jpemberthy, , но это все еще не работает для меня. Я могу отчетливо видеть в своем журнале развития вот так: project_name_development ['people']. Update ({"_ id" => BSON :: ObjectID ('4c5106b6f1936f036c000008'), "address._id" => "4c5106b6f1936f036c000006"}, { «$ set» => {«address.city» => «bhaktapur», «address.province» => «kathmandu»}}) , который, я думаю, должен обновить адрес. И у меня есть «address.update_attributes (address_attribute)» в моей модели Person, где address_attribute - хэш адреса Я что-то пропустил? – Gagan
Я не уверен, что может произойти тогда. Если вы хотите, вставьте консольный поток и код модели в суть, так что вам будет легче помочь. – jpemberthy
спасибо, что ответили. Я понял, что в моей модели есть ошибка, поэтому она не обновляется. еще раз спасибо – Gagan