2014-05-17 14 views
6

Tôi đang cố gắng làm điều gì đó mà tôi cho là khá đơn giản với Factory Girl và không thể hoàn toàn hiểu được nó. Người dùng có nhiều câu chuyện và tôi đang thử nghiệm xem trang hồ sơ của người dùng, trang này liệt kê các câu chuyện được tạo của họ.Nhà máy Cô gái: Tạo hồ sơ liên quan

Tôi nhìn lên tạo nhà máy có liên quan và các tài liệu nói rằng tôi có thể làm một cái gì đó như thế này:

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 

này dường như không làm việc mặc dù - khi tôi nhận được vào giao diện điều khiển và chạy FactoryGirl.create(:user_with_stories).stories.length, tôi nhận được một mảng trống. Tui bỏ lỡ điều gì vậy?

Trả lời

4

bạn nên sử dụng after :buildbuild_list và gán danh sách để hiệp hội của người dùng, như vậy:

after(:build) do |user, evaluator| 
    user.stories << build_list(:story, evaluator.stories_count, user: user) 
end 
1

Câu chuyện được thêm vào sau khi tạo của người sử dụng, bạn cần phải nhanh chóng cho người sử dụng sau khi tạo để xem những câu chuyện kèm theo:

user = FactoryGirl.create(:user_with_stories) 
user = User.find user 
user.stories.length 
Các vấn đề liên quan