【问题标题】:Belongs_to presence in Rails 5 not workingRails 5 中的 Belongs_to 存在不起作用
【发布时间】:2016-07-02 06:40:27
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    根据weird behaviour of config belongs_to_required_by_default 的问题,您的其他宝石之一似乎干预了ActiveRecord::Base 并导致了该错误。

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

    config.active_record.belongs_to_required_by_default = true
    

    从初始化器直接进入application.rb

    这对我来说很顺利。

    【讨论】:

    • 如果你有 Rails 5.1,你不需要做任何事情。只需确保 config.load_defaults 5.1 在您的 application.rb 中,这是新生成的应用程序的默认值 (reference)
    • 我在初始化程序中设置了ActiveRecord::Base.belongs_to_required_by_default = false
    • 仅供参考你也可以在你的ApplicationRecord中设置belongs_to_required_by_default = false
    【解决方案2】:

    新的 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 在您的应用程序中是如何配置的。

    【讨论】:

    • Rails.application.config.active_record.belongs_to_required_by_default = true 仍在项目的new_framework_defaults.rb 中。所以我想这不是问题。
    【解决方案3】:

    我遇到了同样的问题。

    你可以移动

    config.active_record.belongs_to_required_by_default = false

    config/environments/needed_environment.rbconfig/application.rb

    帮了我一把!

    【讨论】:

      猜你喜欢
      • 2017-03-19
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多