我有許多角色的用戶,我想用數字或優先級數字標記這些角色。
前任:
管理員 - 4
客戶 - 3
用戶 - 2
客人 - 1
而不是在我的角色表上添加一個新列,它看起來像這樣
| ID | 姓名 | 優先級編號 |
|---|---|---|
| 1 | 行政 | 4 |
| 2 | 客戶 | 3 |
| 3 | 用戶 | 2 |
| 4 | 客人 | 1 |
我想知道我是否可以在我的角色模型類中做到這一點,這樣我就不必創建到我的表的遷移并將其設為常量值。這甚至可能嗎?
uj5u.com熱心網友回復:
它應該很簡單:
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
但是,我可能會自己添加該列,以防它擴展得更多,并保持它的可查詢性,而不必在外部報告工具中復制規則。
uj5u.com熱心網友回復:
您可以使用列舉更輕松地識別模型中的角色,而無需添加新的遷移。
enum priority_num: {guest: 1, user: 2, client: 3, admin: 4}
User.first.priority_num 將回傳 "admin"
您可以比較以檢查用戶是否是這樣的管理員:
user.priority_num == "admin"
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/314930.html
