2012-03-27 3 views
3
class Alpha 
    include DataMapper::Resource 
    property :id, Serial 
    property :name, String 
    has n, :betas 
end 

class Beta 
    include DataMapper::Resource 
    property :id, Serial 
    property :name, String 
    belongs_to :alpha 
end 

# Create an Alpha with two Betas 
@alpha = Alpha.new(:name => 'A') 
@alpha.betas << Beta.new(:name => 'B') 
@alpha.betas << Beta.new(:name => 'C') 
@alpha.save 

puts @alpha.betas.inspect 
puts "Destroyed? #{@alpha.betas.first.destroy}" 
puts @alpha.betas.inspect 

Pour une raison quelconque, DataMapper ne supprime pas l'objet bêta associé.Echec de la suppression un-à-plusieurs de DataMapper

Est-ce un bug ou manque-t-il quelque chose?

Un exemple complet est dans ce point essentiel https://gist.github.com/2219479

EDIT:

La réponse est de recharger l'objet Alpha après avoir détruit la version bêta

puts @alpha.betas.inspect 
puts "Destroyed? #{@alpha.betas.first.destroy}" 
puts @alpha.betas.reload 
puts @alpha.betas.inspect 
+0

Si vous êtes jeu pour récapituler la solution que votre réponse, je vais supprimer mon répondre. (Voir http://meta.stackexchange.com/questions/90263/unanswered-question-answered-in-comments pour l'explication de pourquoi cela est utile.) Merci! – DreadPirateShawn

Répondre

0

Copie la réponse de la question éditée corps afin de retirer cette question du filtre "Sans réponse":

La réponse est de recharger l'objet Alpha après avoir détruit la version bêta

puts @alpha.betas.inspect 
puts "Destroyed? #{@alpha.betas.first.destroy}" 
puts @alpha.betas.reload 
puts @alpha.betas.inspect 

~ réponse par Craig552uk

Questions connexes