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
如您所见,我使用 trait
s 来定义用户的角色,并设置了不同的电子邮件地址。
我有另一个名为 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 创建用户然后创建事件但是关联我刚刚创建的用户,这可能吗?
您始终可以通过将字段传递给 build
或 create
方法来覆盖字段。要将 event_operator
设置为您想要的 user
,您可以这样做:
user = build(:user)
event = build(:event, event_operator: user)
我有以下工厂女工创建用户:
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
如您所见,我使用 trait
s 来定义用户的角色,并设置了不同的电子邮件地址。
我有另一个名为 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 创建用户然后创建事件但是关联我刚刚创建的用户,这可能吗?
您始终可以通过将字段传递给 build
或 create
方法来覆盖字段。要将 event_operator
设置为您想要的 user
,您可以这样做:
user = build(:user)
event = build(:event, event_operator: user)