我正在开发一个类,需要按如下方式设置选项:
选项实际上是长字符串。它们不一定代表对象状态,而是回答用户提交某个表单的原因。我选择将它们作为一个超级基本的枚举数组,将密钥存储在数据库中,如果选择“其他选项”,还需要一个附加列来存储文本。例如,我会像这样存储记录:
# Class
OPTIONS_CONST = ['Option A', 'Option B', 'Option C', 'Other Option']
def get_option_with_other
return other_option_text if option == OPTIONS_CONST[3]
OPTIONS_CONST[option]
end
# Database, assuming user chose #4, "Other Option"
my_table.option = 3
my_table.other_option_text = 'This is some big pile of text why I am submitting this.'
是否有更多Railsy /传统方式来处理这个问题?我认为现在这很好,但我担心它可能无法很好地扩展,或者在预定义选项列表中处理带有用户输入文本的枚举选项可能有更好的模式。
注意:我不相信ActiveRecord::Enum
符合我的需求。