rails 6.1.4 中的 ActiveRecord 枚举行为更改
ActiveRecord enum behaviour change in rails 6.1.4
我正在从 6.0.3 升级到 6.1.4。升级后我注意到的一件事是,枚举属性不再返回密钥。它返回数据库中的实际值。
例如:
enum onboard_variation: {
key1: "value1",
key2: "value2",
key3: "value3"
}
在控制台中
Rails6.0.3
Account.first.onboard_variation => "key1"
Rails6.1.4
Account.first.onboard_variation => "value1"
我浏览了整个发行说明,但没有提及此更改。是什么导致了这种情况?
找出问题所在。我们有一个自定义默认定义,如下所示
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" }
我正在从 6.0.3 升级到 6.1.4。升级后我注意到的一件事是,枚举属性不再返回密钥。它返回数据库中的实际值。
例如:
enum onboard_variation: {
key1: "value1",
key2: "value2",
key3: "value3"
}
在控制台中
Rails6.0.3
Account.first.onboard_variation => "key1"
Rails6.1.4
Account.first.onboard_variation => "value1"
我浏览了整个发行说明,但没有提及此更改。是什么导致了这种情况?
找出问题所在。我们有一个自定义默认定义,如下所示
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" }