如何为属于用户的产品创建FactoryGirl工厂?

时间:2012-06-23 21:25:25

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

我已经阅读了FactoryGirl文档,但我似乎无法弄清楚这一点。我知道这一定很简单。

这是我的设置:

Rails 3.2.6
User has_many Products


FactoryGirl.define do
  factory :product do
    sequence(:identifier, 1000) {|n| "ABC#{n}" }
  end
end

此操作失败,因为必须有与产品关联的user_id。在我的测试中,我在登录期间创建了一个用户。所以我的测试可以访问用户对象。我只是不知道如何使用FactoryGirl将用户对象传递到产品工厂。

1 个答案:

答案 0 :(得分:1)

假设您已拥有用户工厂(即factory :user do),则可以在:product工厂中添加以下行:

association :user

这将自动创建一个用户工厂(如定义)并将其分配给您的产品。

在测试中创建对象时,仍然可以执行以下操作:

FactoryGirl.create(:produce, user: some_user)

以便分配不同的用户变量,因为Factory会从您刚添加的行中看到关联。

希望这有帮助。