代码之家  ›  专栏  ›  技术社区  ›  Mike W

工厂女工同值异物

  •  0
  • Mike W  · 技术社区  · 6 年前

    我有一个 Transaction 模型,它有两个属性 buyer , seller 两种类型 User .

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

    我试过这个:

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

    但那不管用。

    谢谢你的帮助

    1 回复  |  直到 6 年前
        1
  •  1
  •   Joao Cunha    6 年前

    尝试:

    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