我正在将Ruby 2.2.2(Rails 4.1)应用程序升级到Ruby 2.5.7(Rails 5.2),对于某些模型,我遇到了一些错误
从搜索开始,听起来好像有一些通用的ActiveRecord验证规则/消息?消息是:
Status is invalid
User is invalid`
我是Ruby的新手,所以最好的建议来解决这个错误!
在Rails 5中,每当定义belongs_to
关联时,默认情况下都需要具有关联的记录。这意味着,与Rails 4相比,每个belongs_to :foo
关联基本上也在内部向代码添加了validate :foo, presence: true
。
您有两种选择:
, optional: true
行中添加belongs_to :foo
,切换回这些类型的关联的旧行为。实际上,通过在application.rb
中添加这样的行,实际上有第三个选项可以在整个应用程序中关闭此行为>
Rails.application.config.active_record.belongs_to_required_by_default = true
但是这意味着您的应用程序将不再遵循Ruby on Rails约定,并且不再使用默认值,恕我直言,此举会导致以后更新的问题。
因此,我的建议是:现在修复您的测试,只将那些可选的关联设置为从用户的角度来看实际上是可选的,这可能会花费更长的时间,但将来肯定会减少麻烦。