首页 > 解决方案 > FactoryBot 事件 ID

问题描述

我有一个工厂,看起来像:

factory :order_with_approval do
   status      'approved'
   association :approval, factory: :approval
end

现在,我需要批准模型来获取订单 ID 并将其设置为可事件 ID。我已经能够通过以下方式解决这个问题:

factory :cancellation do
  reason 'a reason'
  cancellation_date Date.current
  association :eventable, factory: :order
end

因此,如果我可以将新工厂以外的其他东西传递给协会,那可能会奏效。我想做的是通过父工厂。那可能吗?我可以通过其他方式实现这一目标吗?

标签: ruby-on-railsrubytestingfactory-bot

解决方案


交叉引用可以用after子句解决,如下所示

factory :order_with_approval do
  status 'approved'
  association :approval, factory: :approval

  after(:build, :create) do |order, _evaluator|
    order.approval.update_attributes!(eventable: order)
  end
end

推荐阅读