【问题标题】:"Status is Invalid" - Active Record - Rails 4.1 -> 5.2“状态无效” - Active Record - Rails 4.1 -> 5.2
【发布时间】:2020-03-01 01:43:30
【问题描述】:

我正在努力将 Ruby 2.2.2 (Rails 4.1) 应用程序升级到 Ruby 2.5.7 (Rails 5.2) 并针对几个模型我'我遇到了一些错误

通过搜索,听起来好像有一些通用的活动记录验证规则/消息?消息是:

Status is invalid
User is invalid`

我充其量只是 Ruby 的新手 - 所以任何有关解决此错误的最佳方法的建议都非常感谢!

【问题讨论】:

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


    【解决方案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 约定和默认设置,恕我直言,这通常会导致以后更新出现问题。

    因此我的建议是:现在修复你的测试,只让那些从用户的角度来看是真正可选的关联是可选的——这可能需要更长的时间,但在未来造成的麻烦肯定会更少。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多