在创建工厂时,如何求解ActivereCord :: RecordInvalid错误?

发布于 2025-01-19 12:12:52 字数 459 浏览 4 评论 0原文

我有一个模型

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

I have a model

class Income < ApplicationRecord

  belongs_to :income_type
  has_one :order

  validates_associated :income_type
  validates_presence_of :income_type

I create a factory for her

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

But it doesn't work and throws an error

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

     ActiveRecord::RecordInvalid: Error

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蹲墙角沉默 2025-01-26 12:12:52

我相信这是由于income_type的验证而发生的。
如果您有income_type的工厂。您可以做两种方法。
提供income_type直接

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

或定义收入工厂内的关联。

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

I believe it happens due to validation of income_type.
If you have a factory for income_type. You can do it two ways.
Provide income_type directly

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

or define an association inside the income factory.

FactoryBot.define do
  factory :income do
    association(:income_type)
    amount { 100.0 }
  end
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文