【问题标题】:Factory Bot Association Attribute Depends on Neighbor AssociationFactory Bot 关联属性取决于邻居关联
【发布时间】:2021-05-18 20:42:52
【问题描述】:

我的应用程序是带有 Factory Bot 和 RSpec 的 Rails 6.1。

我有一个订单模型,其中包含两个不同的归属关联:公司和联系人。联系人也属于公司,创建了一种循环关联。

在我的工厂订购:

FactoryBot.define do
  factory :order do
    factory :order_with_po do
      po_number {1234}
    end

    company
    contact
  end
end

但是,我遇到了问题,因为创建的联系人使用工厂机器人,而工厂机器人又为该联系人创建了一家新公司。同时为订单创建了不同的公司。这两家公司不匹配,但订单上有一个验证,可确保联系人的公司与订单的公司相同。

如何指定创建的联系人使用订单创建的同一公司?最佳做法是什么?

【问题讨论】:

    标签: rspec factory-bot rspec-rails


    【解决方案1】:

    经过多次尝试和错误,我发现了以下作品:

    FactoryBot.define do
      factory :order do
        factory :order_with_po do
          po_number {1234}
        end
    
        company
    
        before(:create) do |order|
          order.contact_id = FactoryBot.create(:contact, company_id: order.company_id).id
        end
      end
    end
    

    感觉有点奇怪,但 Factory Bot 就是这样工作的。构建订单后,它已经创建了公司,因此,您可以在 before create 挂钩中引用公司 ID。我用它来指定订单联系人的公司 ID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多