Rails Factory Girl:创建与用户关联但与角色关联的记录

Rails Factory Girl: Create record associated with user but with role

我有以下工厂女工创建用户:

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 "cash@cash.com"
   end

   trait :athletic_trainer do
     role Role.find_or_create_by(role_title: "Athletic Trainer", name: "athletic_trainer")
     email "cash1@cash.com"
   end

 end
end

如您所见,我使用 traits 来定义用户的角色,并设置了不同的电子邮件地址。

我有另一个名为 Event 的模型,一个事件属于一个 athletic_trainer 关联的名称,它只指向 User 模型,所以我使用 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 创建用户然后创建事件但是关联我刚刚创建的用户,这可能吗?

您始终可以通过将字段传递给 buildcreate 方法来覆盖字段。要将 event_operator 设置为您想要的 user,您可以这样做:

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