2012-05-01 6 views
4

で親からオブジェクト:mongoid削除子は私が行うとき、私は気づく参照1..N関係

parent.children.delete_all(condition: {obj_id: obj.id}) 

、その後、私はやります私が削除しようとしたオブジェクト。

私が代わりに行う場合:私は子供が欠落していることがわかり

parent = Parent.where(id) #get the parent again from db 
parent.children 

子を削除すると、その子をdbから削除して、1回のアクションで配列から参照を削除するにはどうすればよいですか?

+1

キャッシュを更新するために 'parent.children(true) 'を使うことができます。 – klump

+0

@klump。あなたのソリューションは動作します。しかし、これはmongoid文書ではどこでこれが削除の後に行われなければならないと言われていますか?私は同じ問題を抱えており、私はあなたがこれをしなければならないことを書かれているどこかの文書を見つけることを望んでいました。 –

+1

これは文書化されている場所はわかりませんが、子供を削除するとオブジェクトはデータベースと同期されません(これは予想されるものです)。オブジェクトを再びデータベースと同期させるには、キャッシュを更新する必要があります。それだけの論理:P – klump

答えて

1

delete_allの代わりにdestroy_allを試してみてください。

関連する問題