Ruby on rails Factory Girl:创建关联记录
我正试着做一些我认为对工厂女孩应该相当简单的事情,但我不太明白。用户有很多故事,我正在测试查看用户的个人资料页面,其中列出了他们创建的故事 我查阅了创建关联工厂的文档,文档说我可以这样做:Ruby on rails Factory Girl:创建关联记录,ruby-on-rails,factory-bot,Ruby On Rails,Factory Bot,我正试着做一些我认为对工厂女孩应该相当简单的事情,但我不太明白。用户有很多故事,我正在测试查看用户的个人资料页面,其中列出了他们创建的故事 我查阅了创建关联工厂的文档,文档说我可以这样做: FactoryGirl.define do factory :story do title "My Story" segments_limit 5 beginning "Once upon a time" completion_status false user
FactoryGirl.define do
factory :story do
title "My Story"
segments_limit 5
beginning "Once upon a time"
completion_status false
user
end
factory :user do
sequence(:username) { |n| "user-#{n}" }
sequence(:email) { |n| "user-#{n}@example.com" }
password "password"
password_confirmation "password"
factory :user_with_stories do
ignore do
stories_count 5
end
after(:create) do |user, evaluator|
create_list(:story, evaluator.stories_count, user: user)
end
end
end
end
但这似乎不起作用-当我进入控制台并运行
FactoryGirl.create(:user_with_stories).stories.length
时,我得到一个空数组。我遗漏了什么吗?您应该在:build和build\u list
之后使用,并将列表分配给用户的关联,如下所示:
after(:build) do |user, evaluator|
user.stories << build_list(:story, evaluator.stories_count, user: user)
end
after(:build)do |用户、评估者|
user.stories故事是在创建用户后添加的,您需要在创建后实例化用户以查看附加的故事:
user = FactoryGirl.create(:user_with_stories)
user = User.find user
user.stories.length