Rails Factory Girl: Създайте запис, свързан с потребител, но с роля

Имам следното фабрично момиче за създаване на потребител:

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

Както можете да видите, използвам traits за определяне на ролята на потребителя и настройка на различен имейл адрес.

Имам друг модел, наречен Event, едно събитие принадлежи на athletic_trainer, което е името на асоциацията, то просто сочи към потребителския модел, така че използвам Factory Girl за създаване на събитието по следния начин:

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

както можете да видите, добавям event_operator в края на фабричното момиче на събитието за указване на потребителската асоциация, но по този начин нямам достъп до потребителя, свързан с фабричното момиче.

възможно ли е да изпратите athletic_trainer като параметър към фабричното момиче на събитието? Искам да кажа, че искам да създам потребителя с помощта на factory girl и след това да създам събитието, но да асоциирам потребителя, който току-що създадох, възможно ли е?


person svelandiag    schedule 01.05.2016    source източник


Отговори (1)


Винаги можете да замените полета, като ги предадете на методите build или create. За да зададете event_operator на желаното от вас user, трябва да направите следното:

user = build(:user)
event = build(:event, event_operator: user)
person Kristján    schedule 02.05.2016