Ich habe eine FactoryGirl-Fabrik für meine Appointment
Modell. Ex:FactoryGirl Factory aufgrund von Logik in AR Rückruf
require 'faker'
FactoryGirl.define do
factory :appointment do |f|
f.name { 'Pending Appointment' }
end
end
Das Appoinment
Modell viele AppointmentAccess
Instanzen hat. Sie erstellt sie in einem ActiveRecord-Rückruf für das Modell Appointment
. Die AppointmentAccess
ist ein Durchgangsmodell, das die Appointment
mit einer User
in Verbindung bringt.
Ich habe einen Rückruf an der Factory (siehe unten), aber ein Fehler nach wie vor aufgrund des AR Rückruf in dem Appointment
Modell AR Rückruf ausgelöst wird vor dem factory Rückruf ausgeführt wird:
class Appointment < ActiveRecord::Base
has_many :appointment_accesses
has_many :users, through: :appointment_accesses
after_create :example_callback
protected
def example_callback
owner = self.appointment_accesses.find_by(owner: 1)
owner.name
end
end
Da die Der Callback des Modells läuft vor dem FactoryGirl-Callback, es gibt einen Fehler, weil die AppointmentAccess
mit owner
, die auf 1 gesetzt ist, noch nicht existiert. Hier ist meine factory Werk mit dem Callback (wie oben, mit Rückruf):
require 'faker'
FactoryGirl.define do
factory :appointment do |f|
f.name { 'Pending Appointment' }
after(:create) do |appointment|
FactoryGirl.create(:appointment_access, appointment: appointment)
end
end
end
Wie kann ich sicherstellen, dass vor dem Rückruf auf das Appointment
Modell ausgeführt wird, dass die factory Rückruf ersten läuft (da die Activerecord-Logik erfordert, es)?
Vielleicht hilft es Ihnen nicht mit Ihrem Problem, aber versuchen Sie Callbacks zu vermeiden – Sebastian