2016-05-01 5 views
0

Ich habe folgendes Fabrik Mädchen für Benutzer erstellen:Rails Factory Girl: Rekord mit Benutzer zugeordnet erstellen, aber mit Rolle

FactoryGirl.define do 
factory :user do 
    first_name 'Colin' 
    last_name 'Ambler' 
    password 'dell13a1' 
    address_zip '60657' 

    trait :event_operator do 
    role Role.find_or_create_by(role_title: "Event Operator", name: "event_operator") 
    email "[email protected]" 
    end 

    trait :athletic_trainer do 
    role Role.find_or_create_by(role_title: "Athletic Trainer", name: "athletic_trainer") 
    email "[email protected]" 
    end 

end 
end 

Wie Sie ich die trait s sehen für die Rolle des Benutzers definieren, und Richten Sie eine andere E-Mail-Adresse ein.

Ich habe ein anderes Modell Event genannt, ein Ereignis gehört zu einem athletic_trainer, dass der Name des Vereins ist, es zeigt nur auf das User-Modell, so dass ich Factory Girl für die Veranstaltung wie diese erstellen:

FactoryGirl.define do 

    factory :event do 
     event_type Event.event_types[:tournament] 
     sport Event.sports[:lacrosse] 
     event_title "NXT Cup" 
     event_logo { Rack::Test::UploadedFile.new(File.join(Rails.root, 'spec', 'support', 'images', 'nxt_cup_logo.png')) } 
     gender Event.genders[:boys] 
     event_pay_rate 40 
     event_participant_numbers 3 
     event_feature_photo { Rack::Test::UploadedFile.new(File.join(Rails.root, 'spec', 'support', 'images', 'nxt_cup_feature.jpg')) } 
     event_description "We roll out the red carpet for North America's top youth talent. The nations top youth teams descend on the premier facilities in the Philadelphia region to battle it out and stake claim to one of the summers most highly coveted trophies...the NXT Cup." 
     event_operator 
    end 

    end 

wie Sie sehen können, ich füge die event_operator am Ende des Fabrikmädchens der Veranstaltung für die Angabe der Benutzerzuordnung hinzu, aber auf diese Weise habe ich keinen Zugriff auf den Benutzer in der Fabrik Mädchen zugeordnet.

ist es möglich, den athletic_trainer als Parameter an das Fabrikmädchen der Veranstaltung zu senden? Ich meine, ich möchte den Benutzer mit Factory-Mädchen erstellen und dann das Ereignis erstellen, aber den Benutzer, den ich gerade erstellt habe, zuordnen, ist das möglich?

Antwort

1

Sie können Felder immer überschreiben, indem Sie sie an die Methoden build oder create übergeben. Um event_operator zu Ihrem gewünschten user zu setzen, würden Sie dies tun:

user = build(:user) 
event = build(:event, event_operator: user) 
Verwandte Themen