2

埋め込みドキュメントである多くのアイテム「アイテム」を持つモデル「エントリ」があります。

class Entry
  embeds_many :items, cascade_callbacks: true
  ...
end

問題は、いくつかの埋め込みドキュメント アイテムを移動して、いくつかを削除したり、他のアイテムを追加したり、他のアイテムをエントリ間で移動したりする必要があることです。Entry.items に対して次のような操作を行うようです。

entry.items << item or entry.items.delete(i)

独自のデータベース書き込みを引き起こします。そして、私が多くの変更を加えている場合、それは非常に費用がかかるようです. アイテムを追加、削除、ローカルに移動させ、すべてが完了したときにのみ単一のエントリを送信するようにモンゴイドに指示する方法はありますか.save! データベースに書き込みますか?

4

1 に答える 1

0

次のようにして、項目配列を置き換えます。

entry.items = new_items 

最も効率的なデータベースです。しかし、バグがあることが判明しました。mongoid の最新バージョンを使用していることを確認し、entry.changed の場合は entry.save を実行してください。|| entry.new_record? アイテムを変更すると、上記のエントリが保存されないことがあるためです。

于 2012-09-01T14:02:31.690 に答える