具有has_one关联的FactoryGirl.create上的NotNullViolation

两次

我在工厂上调用create时遇到Null违规错误。

这是我的两个模型:

# Table name: test_masters
#  id         :integer          not null, primary key
class TestMaster < ActiveRecord::Base
  has_one :test_slave, dependent: :destroy
end

# Table name: test_slave
#  id             :integer          not null, primary key
#  test_master_id :integer          not null
class TestSlave < ActiveRecord::Base
  belongs_to :test_master, dependent: :destroy
end

和以下工厂:

FactoryGirl.define do
  factory :test_master do
    test_slave
  end
end

FactoryGirl.define do
  factory :test_slave do
  end
end

当我在rails控制台中运行FactoryGirl.create(:test_master)时,出现以下错误:

PG::NotNullViolation: ERROR:  null value in column "test_master_id" violates not-null constraint
ActiveRecord::StatementInvalid: PG::NotNullViolation: ERROR:  null value in column "test_master_id" violates not-null constraint

我以为从test_master工厂调用test_slave工厂会自动提供test_master_id ...,但事实并非如此。

我的工厂出问题了吗?

解谜者

您的test_slave工厂应定义创建有效记录所需的属性。由于您TestSlave需要一个TestMaster,因此需要在test_slave工厂中进行定义

简而言之,您在工厂中指定的关联方向错误。尝试以下方法:

FactoryGirl.define do
  factory :test_master do
  end
end

FactoryGirl.define do
  factory :test_slave do
    test_master
  end
end

然后,当您执行时FactoryGirl.create(:test_slave),可以指定其TestMaster

master = FactoryGirl.create(:test_master)
FactoryGirl.create(:test_slave, test_master: test_master)

如果不指定该属性,它将为您生成一个:

FactoryGirl.create(:test_slave) # Generates a new TestMaster and uses that.

希望有帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有has_many和has_one的多态关联的Factory Girl

来自分类Dev

具有has_one关联回滚的Rails 4 nested_attributes

来自分类Dev

如何使用自动保存为has_one关联编写FactoryGirl:true?

来自分类Dev

具有 has_one 关系的专家

来自分类Dev

Rails has_one关系,外键在拥有模型上?

来自分类Dev

Rails has_one关系,外键在拥有模型上?

来自分类Dev

在同一模型上使用许多has_one关系

来自分类Dev

Rails在对象创建上设置了has_one关系

来自分类Dev

具有has_many关联上的联接的Rails ActiveRecord模型范围

来自分类Dev

如何查找在has_many关联上具有嵌套属性的验证失败的记录?

来自分类Dev

具有has_one的ActiveRecord批量插入

来自分类Dev

ActiveRecord has_one具有动态范围

来自分类Dev

具有has_one关系的种子,Ruby on Rails(编辑)

来自分类Dev

关系“has_one” - 如何选择具有 nil 的元素?

来自分类Dev

与自身的可选has_one关联的范围

来自分类Dev

嵌套has_one关联的强参数

来自分类Dev

has_one关联的嵌套属性

来自分类Dev

has_one与链接包括的关联

来自分类Dev

Rails has_one关联混乱

来自分类Dev

黑子-索引has_one关联

来自分类Dev

Rails has_one关联混乱

来自分类Dev

Has_One关联未创建

来自分类Dev

has_one与链接包括的关联

来自分类Dev

Rails has_one 与多态关联

来自分类Dev

当有多个带有Foreign_key的记录时,Rails has_one关联

来自分类Dev

当模型具有另一个模型的一个或零个实例时,可以使用has_one关联吗?

来自分类Dev

当模型具有另一个模型的一个或零个实例时,可以使用has_one关联吗?

来自分类Dev

与has_one的多态关联,无法通过关联创建

来自分类Dev

Rails-如何搜索有has_one关联的控制台

Related 相关文章

热门标签

归档