如何在控制台中个性化ActiveRecord对象的显示

时间:2017-07-05 03:57:47

标签: ruby-on-rails

我有一个对象,当在rails控制台上打印时看起来像:

> Model.first
MyModel{
    id: 1
  role: 2
status: 5
}

我有哪些选项可以将rolestatus更改为更具描述性的值?假设我在MyModel上有一个哈希来指定每个东西是什么

 class MyModel < AR
    STATUSES = {0: active, 1: inactive, etc...}

如何使用rails控制台自定义输出以使用这些值进行打印?我试过检查没有成功。

PD。我知道enum是一个选项,但由于其他原因,我真的想自定义在控制台中打印此对象的输出。我很清楚AwesomePrint可以做到这一点。例如,我也想隐藏一些字段。

1 个答案:

答案 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了解详情。