Belongs_to 出现在 Rails 5 不工作

Belongs_to presence in Rails 5 not working

据我所知,Rails 5 中的新默认值要求存在 belongs_to 个关联。我用这个关联制作了一个模型,但问题是当关联字段为空时我没有收到存在验证错误。相反,我收到一个数据库空验证错误,因为我将 _id 列设置为不为空。 (PG::NotNullViolation 因为我使用 Postgres)

这种行为正常吗?我的意思是我不应该只得到 rails 错误吗?

顺便说一句,当我为该字段添加存在验证时,它按预期工作。

新 Rails 5 个应用程序在

中带有新的初始值设定项
config/initializers/active_record_belongs_to_required_by_default.rb

如果您升级了 Rails 4 应用程序或使用 Rails 5 的测试版创建了应用程序,则该文件可能会丢失。

该文件中的配置启用了相关功能:

# Be sure to restart your server when you modify this file.

# Require `belongs_to` associations by default. This is a new Rails 5.0
# default, so it is introduced as a configuration option to ensure that apps
# made on earlier versions of Rails are not affected when upgrading.
Rails.application.config.active_record.belongs_to_required_by_default = true

请检查 belongs_to_required_by_default 在您的应用程序中的配置方式。

根据重新 weird behaviour of config belongs_to_required_by_default 的问题,您的其他 gem 似乎干预了 ActiveRecord::Base 并导致了错误。

该问题的解决方法之一是移动线路

config.active_record.belongs_to_required_by_default = true

从初始值设定项直接进入 application.rb

这对我来说很顺利。

我遇到了同样的问题。

你可以移动

config.active_record.belongs_to_required_by_default = false

config/environments/needed_environment.rbconfig/application.rb

对我有帮助!