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.rb
或config/application.rb
对我有帮助!
据我所知,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.rb
或config/application.rb
对我有帮助!