如何从rails模型中添加常量值



我有许多角色的用户,我想用数字或优先级号码标记这些角色。

,

Admin - 4

Client - 3

用户- 2

Guest - 1

而不是在我的角色表上添加一个新的列,它看起来像这样

<表类>id名称priority_numtbody><<tr>1管理42客户33用户24客人1

应该像这样简单:

class User
def priority_num
case name
when 'Admin'
4
when 'Client'
3
when 'User'
2
when 'Guest'
1
else
raise StandardError.new "#{name} does not have a priority_num configured"
end
end
end

然而,我可能会自己添加列,以防它扩展更多,并保持可查询性,而不必在外部报告工具中复制规则。

您可以使用enum来更容易地识别模型中的角色,而无需添加新的迁移。

enum priority_num: {guest: 1, user: 2, client: 3, admin: 4}

User.first.priority_num将返回"admin"

你可以像这样比较检查用户是否为admin:

user.priority_num == "admin"

@aRtoo

enum priority_num: {guest: 1, user: 2, client: 3, admin: 4}
user = User.first
user.read_attribute_before_type_cast(:priority_num)

给出一个枚举状态的整数