2017-08-21 1 views
0

Je dois retirer l'entité associée de la collection. Ainsi par exemple j'ai M: N relation: projet qui a plusieurs utilisateurs (et les utilisateurs peuvent avoir plusieurs projets). Comment puis-je supprimer l'utilisateur du projet, mais ne le supprimez pas?Mongoid - Supprimer l'entité de la collection M: N mais ne pas l'effacer

# this removes user from project, but also deletes user 
project.users.find(id: user._id).remove 

Merci

Répondre

1

Disons que nous avons la bande et il a plusieurs tags:

band = Band.all[1] 
=> #<Band _id: 599d2c8a9d1fa2c5498024cc, name: "test_band", tag_ids: [BSON::ObjectId('599d2c8a9d1fa2c5498024cd'), BSON::ObjectId('599d2c8a9d1fa2c5498024ce'), BSON::ObjectId('599d2c8a9d1fa2c5498024cf')]> 

Ensuite, si nous essayons de supprimer l'un des objets d'étiquette connexes:

band.tags.delete(Tag.find(id: '599d2c8a9d1fa2c5498024cd') 
... 
MONGODB | localhost:27017 | test_development.update | SUCCEEDED | 0.000634s 
=> #<Tag _id: 599d2c8a9d1fa2c5498024cd, name: "test_tag1", band_ids: []> 

Il sera supprimé de band.tags tableau:

irb(main):088:0> band 
=> #<Band _id: 599d2c8a9d1fa2c5498024cc, name: "test", tag_ids: [BSON::ObjectId('599d2c8a9d1fa2c5498024ce'), BSON::ObjectId('599d2c8a9d1fa2c5498024cf')]> 

Mais cette étiquette encore présente comme objet:

Tag.find(id: '599d2c8a9d1fa2c5498024cd') 
=> #<Tag _id: 599d2c8a9d1fa2c5498024cd, name: "test_tag1", band_ids: []> 
+0

mais je n'ai pas 'attribut project_id'. J'ai un tableau 'project_ids', que je ne peux pas mettre à 'nil' car je veux supprimer un seul élément, pas toute la collection. –

+0

Que faire si juste supprimer un élément de ce tableau comme ceci: 'project.users.delete (user._id)'? – iskvmk

+0

Non, supprimer supprimera le document! –