我有一个对象,当在rails控制台上打印时看起来像:
> Model.first
MyModel{
id: 1
role: 2
status: 5
}
我有哪些选项可以将role
和status
更改为更具描述性的值?假设我在MyModel
上有一个哈希来指定每个东西是什么
class MyModel < AR
STATUSES = {0: active, 1: inactive, etc...}
如何使用rails控制台自定义输出以使用这些值进行打印?我试过检查没有成功。
PD。我知道enum
是一个选项,但由于其他原因,我真的想自定义在控制台中打印此对象的输出。我很清楚AwesomePrint可以做到这一点。例如,我也想隐藏一些字段。
答案 0 :(得分:0)
作为stated in the comments,您可以使用enum
来获取您要查找的结果。我认为这是你最好的选择。
要使用enum
,只需将其添加到您的模型中,例如:
class MyModel < ApplicationRecord
enum status: { active: 0, inactive: 1, other: 5 }
enum role: { admin: 0, user: 1, superuser: 2 }
end
请注意,哈希中的键是带有所需描述的符号,值是存储在数据库中的数据。
示例:
pp MyModel.first
#<MyModel:0x007f89e736a600
id: 4,
role: "superuser",
status: "other">
此外,在枚举到位的情况下,您可以为自己创建许多方法,因此无需再次使用db值。查看the docs了解详情。