Rails Tests, Factory Girl, Assoziationen und ActiveRecord Callbacks

Gespeichert von jens am/um 23. November 2011 - 16:43

Beim Testen mit Factory Girl kam mir heute eine Fehlermeldung unter, die durch ein Callback verursacht wurde. Ein Modell erzeugte nach dem Anlegen ein zugehöriges Modell direkt via after_save :create_B. Die problematische Factory sah so aus:


  factory :B do
    association :blabla, :factory => :A
    firstname "Max"
    lastname "Mustermann"
  end

Die Fehlermeldung lautete: ActiveRecord:RecordInvalid: A bereits vergeben!

Nach ein wenig Recherche war das Problem auf die Callback-Funktion eingegrenzt. Glücklicherweise können Callbacks deaktiviert werden. Die folgende Zeile in den entsprechenden Tests behob das Problem:


A.skip_callback(:save, :after, :create_B)