纸迹对象更改和轨道枚举

Paper trail object changes and rails enums

提问人:Samar 提问时间:3/12/2023 更新时间:4/12/2023 访问量:115

问:

我正在一个旧项目中处理版本控制模型。项目中使用的几乎所有枚举值都是整数。使用 object_changes 跟踪更改时,这些值显示为整数,查看此数据的最终用户不清楚这一点。

例如

class Article  
    has_paper_trail
   enum status: {draft: 0, published: 1}
end

记录随对象更改一起保存 有没有办法保存或显示状态键而不是值?status :[0,1]

Ruby-on-Rails Paper-Trail-gem

评论

1赞 max 3/12/2023
为什么最终用户查看未处理的数据?人性化枚举是一个视图关注点,而不是一个模型关注点。
0赞 Sergey Sokolov 3/13/2023
可以使用 Article.statuses.invert[0] 获取状态的字符串名称

答:

2赞 Poonam Shah 3/20/2023 #1

您可以使用以下代码获取枚举值的可读形式。

version = Article.first.versions.last
version.changeset["status"]

要更进一步,请迁移数据并定义“status”的枚举,如下所示。

enum status: {draft: :draft, published: :published}

Rails 会将值保存为字符串;因此,其属性必须具有兼容的数据类型。