创建工厂时出现ActiveRecord::RecordInvalid错误如何解决?

How to solve the ActiveRecord::RecordInvalid error when creating a factory?

我有模型

class Income < ApplicationRecord

  belongs_to :income_type
  has_one :order

  validates_associated :income_type
  validates_presence_of :income_type

我为她创建一个工厂

FactoryBot.define do
  factory :income do
    income_type
    amount { 100.0 }
  end
end

但是它不起作用并抛出错误

Failure/Error: let!(:income) { create(:income) }

     ActiveRecord::RecordInvalid: Error

我相信这是由于 income_type 的验证而发生的。 如果您有 income_type 的工厂。你可以通过两种方式做到这一点。 直接提供income_type

let(:income_type) { create(:income_type) }
let!(:income) { create(:income, income_type: income_type) }

或者在 income 工厂中定义一个关联。

FactoryBot.define do
  factory :income do
    association(:income_type)
    amount { 100.0 }
  end
end