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

Как видите, я использую trait для определения роли пользователя и настройки другого адреса электронной почты.

У меня есть другая модель с именем 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 в конце события factory girl, чтобы указать ассоциацию пользователей, однако таким образом у меня нет доступа к пользователю, связанному с 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