0

mongodbに埋め込まれたドキュメントの更新に問題があります。
次のシナリオがあります。ユーザーモデルには、埋め込まれたドキュメントとしてアドレスがあります。
親モデルにアドレスを埋め込むことができます。ユーザーモデルですが、アドレスの_idが埋め込まれていても、埋め込まれたアドレスを更新する方法がわかりません

助けてください
ありがとう

4

2 に答える 2

2

親から埋め込みドキュメントを取得してから、更新操作を行う必要があります。

address = user.address
address.update_attributes(:street => "foo")
于 2010-07-27T17:11:19.090 に答える
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"

于 2010-11-05T00:51:33.527 に答える