如何解决尽管belongs_to :foo, optional: true 仍然得到NotNullViolation
我有一个 has_one
和 belongs_to
关联,如下所示:
# teacher.rb
has_one: :student
和
# student.rb
belongs_to :teacher,optional: true
但是当我尝试在没有老师的情况下创建学生时...
a = Student.new()
a.save!
ActiveRecord::NotNullViolation: PG::NotNullViolation: ERROR: null value in column "teacher_id" violates not-null constraint
这没有意义,因为我有 optional: true
。我已经尝试了 rake db:drop db:create db:migrate db:seed
多次,但仍然是同样的错误
解决方法
感谢@dbugger 和@Daniel Sindrestean,并在另一个论坛的帮助下,我发现这就像进入现有迁移文件并将 null: false
更改为 null: true
一样简单。然后重新制作数据库。或者,如果使用现有应用程序,则运行迁移以更改 null:true
。无论哪种方式,null: false
都需要是 null: true
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。