首页 > 解决方案 > FactoryGirl 具有相同值的不同对象

问题描述

我有一个Transaction模型,它有 2 个属性buyerseller都是 type User

我需要创建一个拥有相同买家和卖家的工厂。

我试过这个:

FactoryGirl.define do
 factory :transaction do
   [...]
   factory :same_user_transaction do
      user = create(:user)
      buyer = user
      seller = user
   end
 end
end

但这不起作用。

感谢您的帮助

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

解决方案


尝试:

FactoryGirl.define do
 factory :transaction do
   [...]
   factory :same_user_transaction do
      buyer  { create(:user) }
      seller { buyer }
   end
 end
end

如果您有用户工厂,其他方法可能是:

factory :same_user_transaction do
  association :buyer, factory: :user
  seller { buyer }
end

甚至更好,使用别名:

factory :user, aliases: [:buyer] do
  first_name    "John"
  last_name     "Doe"
  date_of_birth { 18.years.ago }
end

factory :same_user_transaction do
  buyer
  seller { buyer }
end

这是参考:https ://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md#aliases


推荐阅读