我是否应该将标题、性别和称呼等选项存储为整数,或者它不相关,我可以将它们存储为字符串?
class User < ActiveRecord::Base
enumerize :gender, in: [:male, :female]
TITLE = { dr: 0, prof: 1, prof_dr: 2 }
def title
TITLE.key(read_attribute(:title))
end
def title=(t)
write_attribute(:title, TITLE[t.to_sym])
end
end
假设我有 2000 个用户,每个用户有 6 个可能的选项。
最佳答案
过去,当存储空间昂贵时,就有理由将字符串存储为数字。在当今时代,除了嵌入式应用程序(可能不应该运行 Rails)之外,没有必要,特别是考虑到您的示例数据库大小为 2000 个用户。
此外,如果将字符串存储为数字,则会有以下缺点:
- 代码复杂性增加
- 没有代码就无法“读取”的数据库(完成了一些数据库端口并编写了 Rails 作为后端数据分析的前端,这些都变得很重要。)
出于性能问题,请确保您的数据库 key 设置正确。
关于mysql - 将枚举存储为整数与字符串之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20177471/