“状态无效”-活动记录-Rails 4.1-> 5.2

问题描述 投票:0回答:1

我正在将Ruby 2.2.2(Rails 4.1)应用程序升级到Ruby 2.5.7(Rails 5.2),对于某些模型,我遇到了一些错误

从搜索开始,听起来好像有一些通用的ActiveRecord验证规则/消息?消息是:

Status is invalid
User is invalid`

我是Ruby的新手,所以最好的建议来解决这个错误!

ruby-on-rails ruby ruby-on-rails-5
1个回答
1
投票

在Rails 5中,每当定义belongs_to关联时,默认情况下都需要具有关联的记录。这意味着,与Rails 4相比,每个belongs_to :foo关联基本上也在内部向代码添加了validate :foo, presence: true

您有两种选择:

  • 遵循新的Ruby on Rails约定,并通过将所有必需的关联对象添加到模型来修复测试。
  • 通过在代码的每条, optional: true行中添加belongs_to :foo,切换回这些类型的关联的旧行为。

实际上,通过在application.rb中添加这样的行,实际上有第三个选项可以在整个应用程序中关闭此行为>

Rails.application.config.active_record.belongs_to_required_by_default = true

但是这意味着您的应用程序将不再遵循Ruby on Rails约定,并且不再使用默认值,恕我直言,此举会导致以后更新的问题。

因此,我的建议是:现在修复您的测试,只将那些可选的关联设置为从用户的角度来看实际上是可选的,这可能会花费更长的时间,但将来肯定会减少麻烦。

© www.soinside.com 2019 - 2024. All rights reserved.