如何将枚举集成到现有属性栏上

问题描述 投票:-1回答:1

我想在现有日期使用enum。表中的status列包含数千条记录。

问题是我数据库中的记录是大写的,例如ActivePendingAwaiting ReviewClosed

现在我定义一个枚举

enum status: [:active,:closed,:pending,:awaiting_review]

由于资金原因,下划线而不是空格,它为什么不起作用。

[当我执行Model.first.status时返回nil

ruby-on-rails ruby enums ruby-on-rails-5 enumeration
1个回答
0
投票

您的问题是,您正在尝试执行此Model.status,它不会返回任何内容,因为status是实例方法,而不是类方法,如果您想查看所有状态,请执行此操作

Model.statuses

如果要获取Model对象的状态,它将返回一个哈希,这是一个示例

Model.first.status

而且,默认情况下,枚举需要一个整数列,因此,如果您这样定义枚举,则>]

enum status: [:active,:closed,:pending,:awaiting_review]

然后,表中的值分别为0, 1, 2, 3

因此,您可能希望将status列迁移到integer,然后编写rake任务以根据枚举值将现有值更新为新值!

希望有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.