2014-11-21 64 views
1

我有一个Userhas_many在Rails 4.1.6中的职位。继Getting Started page for Factory Girl,我已经创建了这些工厂:无法建立与工厂女孩has_many关联

factory :post do 
    skip_create 
    title 'foo bar' 
    user 
end 

factory :user do 
    skip_create 
    id 1 
    username 'alice' 

    factory :user_with_posts do 
    skip_create 

    transient do 
     posts_count 5 
    end 

    after(:build) do |user, evaluator| 
     build_list(:post, evaluator.posts_count, user: user) 
    end 
    end 
end 

但调用build(:user_with_posts)返回User与空posts阵列。拨打build_list(:post, 5, user: user)(预制User)的作品。

我错过了什么?

另外,有没有办法设置全球skip_create,所以我不必在每个工厂都设置它?

回答

1

我有一个类似的问题,并根据我正在阅读的所有文档,它应该一直工作。这里是最后的工作(适用于您的代码):

变化

build_list(:post, evaluator.posts_count, user: user) 

user.posts = build_list(:post, evaluator.posts_count, user: user) 

让我知道,如果不工作,但是这就是解决对我来说。

+0

或者在你的情况下,它可能必须是user_with_posts.posts = build_list(:post,evaluateator.posts_count,user:user) – 2014-11-21 22:33:21

+0

谢谢,它是'user.posts =' – Schrute 2014-11-21 23:40:30

+0

太棒了。很高兴它的工作。 – 2014-11-22 02:50:03