Belongs_to在Rails 5中的存在不起作用

时间:2016-07-02 06:40:27

标签: ruby-on-rails ruby postgresql ruby-on-rails-5

据我所知,Rails 5中的新默认值需要belongs_to个关联。我用这个关联建立了一个模型,但问题是当关联字段为空时我没有得到状态验证错误。相反,我得到一个数据库Null Validation错误,因为我将_id列设置为null。 (PG :: NotNullViolation因为我使用Postgres)

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

顺便说一句,当我为该字段添加状态验证时,它可以正常工作。

3 个答案:

答案 0 :(得分:9)

根据问题re weird behaviour of config belongs_to_required_by_default,您的其他宝石似乎介入ActiveRecord::Base并导致错误。

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

config.active_record.belongs_to_required_by_default = true

从初始化程序直接进入application.rb

这对我很顺利。

答案 1 :(得分:3)

New Rails 5应用程序附带了一个新的初始化程序

class MyWorker {
    public function start() {
        return parent::start(PTHREADS_INHERIT_INI | PTHREADS_INHERIT_CONSTANTS);
    }
}

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

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

config/initializers/active_record_belongs_to_required_by_default.rb

请检查您的申请中# 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 的配置方式。

答案 2 :(得分:0)

我遇到了同样的问题。

你可以移动

config.active_record.belongs_to_required_by_default = false

config/environments/needed_environment.rbconfig/application.rb

帮助我!

相关问题