は、我々はバンドを持っているし、それが複数のタグを持っているとしましょう:
band = Band.all[1]
=> #<Band _id: 599d2c8a9d1fa2c5498024cc, name: "test_band", tag_ids: [BSON::ObjectId('599d2c8a9d1fa2c5498024cd'), BSON::ObjectId('599d2c8a9d1fa2c5498024ce'), BSON::ObjectId('599d2c8a9d1fa2c5498024cf')]>
その後、我々は、関連するタグオブジェクトの1つを削除しようとします
band.tags.delete(Tag.find(id: '599d2c8a9d1fa2c5498024cd')
...
MONGODB | localhost:27017 | test_development.update | SUCCEEDED | 0.000634s
=> #<Tag _id: 599d2c8a9d1fa2c5498024cd, name: "test_tag1", band_ids: []>
それをband.tags
アレイから削除されます:
irb(main):088:0> band
=> #<Band _id: 599d2c8a9d1fa2c5498024cc, name: "test", tag_ids: [BSON::ObjectId('599d2c8a9d1fa2c5498024ce'), BSON::ObjectId('599d2c8a9d1fa2c5498024cf')]>
しかし、オブジェクトとしてまだ存在そのタグ:
Tag.find(id: '599d2c8a9d1fa2c5498024cd')
=> #<Tag _id: 599d2c8a9d1fa2c5498024cd, name: "test_tag1", band_ids: []>
が、私は 'project_id'属性を持っていません。私は 'project_ids'という配列を持っています。これは、コレクション全体ではなく、ただ一つの項目を削除したいので、' nil'に設定することはできません。 –
'project.users.delete(user._id)'のように、その配列から要素を削除すればどうなるでしょうか? – iskvmk
いいえ、削除するとドキュメントが削除されます。 –