【问题标题】:ActiveRecord enum behaviour change in rails 6.1.4Rails 6.1.4 中的 ActiveRecord 枚举行为更改
【发布时间】:2021-09-29 01:45:31
【问题描述】:

我正在从 6.0.3 升级到 6.1.4。升级后我注意到的一件事是,枚举属性不再返回密钥。它返回数据库中的实际值。

例如:

  enum onboard_variation: {
    key1: "value1",
    key2: "value2",
    key3: "value3"
  }

在控制台中

Rails 6.0.3

Account.first.onboard_variation => "key1"

Rails 6.1.4

Account.first.onboard_variation => "value1"

我浏览了整个发行说明,但没有提及此更改。什么可能导致这种情况?

【问题讨论】:

  • 打印Account.onboard_variation返回什么?

标签: ruby-on-rails ruby activerecord enums ruby-on-rails-6.1


【解决方案1】:

找出问题所在。我们有一个自定义的默认定义,如下所示

attribute :onboard_variation, :string, default: -> { Utilities::Random.flip_coin ? "value1" : "value2" }

Rails 6.1 支持枚举定义的默认值。更改为下面,一切都按预期工作

enum onboard_variation: {
        key1: "value1",
        key2: "value2",
        key3: "value3"
      }, _default: -> { Utilities::Random.flip_coin ? "value1" : "value2" }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多