我是否应该将标题,性别和称呼等选项存储为整数,或者它是否相关,我可以将它们存储为字符串?
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个可能的选项。
答案 0 :(得分:0)
整数在数据库级别上工作得更好,但要确保记住每个数字的含义。
字符串更容易使用,因为人们记住单词比数字更好,这就是我们使用URL而不是IP的原因。
答案 1 :(得分:0)
正如其他人所提到的,整数具有性能优势。是否足够重要是另一个问题。
我建议你在编写代码和开发API时做一些自然的事情。这将使您的代码对您自己(以及其他适用的代码)更直观,并使您在开发中更有效率。
答案 2 :(得分:0)
过去,当存储空间成本高昂时,有理由将字符串存储为数字。在这个时代,除了嵌入式应用程序(可能不应该运行rails)之外,没有必要,特别是考虑到您的示例数据库大小为2000个用户。
此外,如果您将字符串存储为数字,则会有以下缺点:
对于性能问题,请确保正确设置数据库密钥。