Ruby on rails 如何为属于同一模型的两个不同实例且需要其id'的方法编写工厂;什么是工厂机器人?

Ruby on rails 如何为属于同一模型的两个不同实例且需要其id'的方法编写工厂;什么是工厂机器人?,ruby-on-rails,ruby,rspec,tdd,factory-bot,Ruby On Rails,Ruby,Rspec,Tdd,Factory Bot,我有一个用户模型,其中有许多帐户,每个帐户属于一个用户,有许多交易,每个交易属于两个不同的帐户(发送方和接收方),原始的属于添加工厂(如帐户)的方法将不起作用,因为我需要一个发送方帐户和接收方帐户 如果我用sender\u account 1手动设置ID并运行rpsec我会得到: ActiveRecord::AssociationTypeMismatch: Account(#5570447856500) expected, got 1 which is an instance of

我有一个
用户
模型,其中
有许多
帐户,每个
帐户
属于一个用户,
有许多
交易,每个
交易
属于两个不同的帐户(
发送方
接收方
),原始的
属于添加工厂(如
帐户
)的
方法将不起作用,因为我需要一个
发送方帐户
接收方帐户

如果我用
sender\u account 1
手动设置ID并运行
rpsec
我会得到:

ActiveRecord::AssociationTypeMismatch:
       Account(#5570447856500) expected, got 1 which is an instance of Integer(#5570414320800)
即使ID存储为
整数

当我的模型
属于同一模型的不同实例时,如何添加关联?
我已经定义了我的帐户和用户工厂,它们按预期工作

ActiveRecord::AssociationTypeMismatch:
       Account(#5570447856500) expected, got 1 which is an instance of Integer(#5570414320800)
实际上,此错误表示,指定的是整数而不是帐户,因此我们可以将现有帐户id指定为
发送方帐户id
接收方帐户id

FactoryBot.define do
  factory :transaction do
    sender_account_id 1
    recipient_account_id 2
  end
end
另一种解决方案是指定所创建关联的工厂:

FactoryBot.define do
  factory :transaction do
    association :sender_account, factory: :account
    association :recipient_account, factory: :account
  end
end

这将使用
account
factory

sender\u account
recipient\u account
关联创建一个帐户。请显示测试失败的代码以及如何在模型中设置关联。第二个解决方案非常有效,非常感谢@Igor Drozdov!