2012-04-05 9 views
2

J'ai un modèle de personne qui embeds_many adresses.enregistrer des documents incorporés mongoid

Existe-t-il un moyen de toujours effacer la relation intégrée lors de la mise à jour? Par exemple, si j'envoie une représentation complète d'une personne, y compris les adresses, je souhaite remplacer les adresses existantes plutôt que de les ajouter.

Ma température fixe est un rappel before_save qui dégagez toutes les adresses

class Person 
    include Mongoid::Document 
    embeds_many :addresses 

    before_save :clear_addresses! 

    def clear_addresses! 
    self.unset(:addresses) 
    end 
end 
+0

Si vous faites cela, pourquoi avoir un embeds_many adresses? parce que vous n'avez jamais cette adresse associée à votre personne .... – shingara

Répondre

1

Vous pouvez passer un addresses vide params lorsque vous mettez à jour votre personne

person.update_attributes(:addresses => []) 
+0

Oui, je peux le faire. Mais ce que je veux faire, c'est de «clarifier à chaque fois». Si les adresses sont passées, elles devraient remplacer les adresses déjà persistées. –

+0

Je ne comprends vraiment pas le but :( – shingara

+0

Avec mes adresses d'installation actuelles doivent être effacées, sauf si elle est envoyée au serveur.Par conséquent, ne pas passer des adresses devrait effacer ceux qui existent déjà. –

Questions connexes