FactoryGirl:指定关联模型

时间:2016-06-01 18:54:02

标签: ruby-on-rails ruby rspec factory-bot

我有两个简单的工厂:一个用于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,我一直在谷歌搜索,但一直无法弄清楚这个。

问题:在创建具有工厂女孩的对象时,如何在关联对象上设置一些自定义属性?

1 个答案:

答案 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"))

注意:不要忘记使用构建而不是尽可能地创建以加速测试:)