我有两个简单的工厂:一个用于user
,另一个用于blog
。创建博客时,它必须具有关联的user
,因此这反映在博客工厂中:
FactoryGirl.define do
factory :user do
end
end
FactoryGirl.define do
factory :blog do
user #specifying the required association
end
end
现在,我可以按照以下规范创建博客:
blog = create(:blog)
我不确定如何在规范中执行的操作是如何在首次创建user
记录时立即在关联的blog
记录上指定一些自定义属性。
例如:在创建blog
记录(也创建关联的user
记录)时,我想在该关联的first_name
记录上指定user
属性。类似的东西:
blog = create(:blog, associated_user: (first_name: 'foobar) )
上面的语法不起作用,但我想做那样的事情。我确实看过factory girl docs,我一直在谷歌搜索,但一直无法弄清楚这个。
问题:在创建具有工厂女孩的对象时,如何在关联对象上设置一些自定义属性?
答案 0 :(得分:2)
您只需使用所需的对象设置相应的调用参数即可。
user = create(:user, first_name: "Harald")
blog = create(:blog, user: user)
# or inline if preferred
blog = create(:blog, user: create(:user, first_name: "Heinz"))
注意:不要忘记使用构建而不是尽可能地创建以加速测试:)