Rails 6.1.4 中的 ActiveRecord 枚举行为更改
Posted
技术标签:
【中文标题】Rails 6.1.4 中的 ActiveRecord 枚举行为更改【英文标题】:ActiveRecord enum behaviour change in rails 6.1.4 【发布时间】: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
返回什么?
【参考方案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"
【讨论】:
以上是关于Rails 6.1.4 中的 ActiveRecord 枚举行为更改的主要内容,如果未能解决你的问题,请参考以下文章
使用 Rails 6 ActiveRecord 进行完全外连接
在 Rails 中,有没有办法指定您希望 attr_accessor 成为的类型,并使用内置的 Rails 验证对其进行验证?