Ruby on rails 何时对下拉或多选字段使用相关表vs常量?

Ruby on rails 何时对下拉或多选字段使用相关表vs常量?,ruby-on-rails,rails-activerecord,ruby-on-rails-5.2,Ruby On Rails,Rails Activerecord,Ruby On Rails 5.2,我有许多下拉字段,有些有2、4、10和50个选项。这是有一个,属于关系。我也有一些多对多的关系 目前,我正在使用带有常量的模块填充下拉列表 SOFTWARE = [ "Windows, "OSX", "iOS", "Word", "Excel"] 我将值存储为字符串,或者如果它有多种类型的关系,我将其存储为Postgres数组 有人建议我应该使用相关的表,在数据完整性和可伸缩性方面具有属于和有一个关系 使用相关表如何帮助扩展和数据完整性?您建议何时使用常数,何时使用相关表格?这取决于您的选择。

我有许多下拉字段,有些有2、4、10和50个选项。这是有一个,属于关系。我也有一些多对多的关系

目前,我正在使用带有常量的模块填充下拉列表

SOFTWARE = [ "Windows, "OSX", "iOS", "Word", "Excel"]
我将值存储为字符串,或者如果它有多种类型的关系,我将其存储为Postgres数组

有人建议我应该使用相关的表,在数据完整性和可伸缩性方面具有属于和有一个关系


使用相关表如何帮助扩展和数据完整性?您建议何时使用常数,何时使用相关表格?

这取决于您的选择。我曾经使用内置数组检查类型的验证。比如说,

CITIES=['多伦多'、'温哥华'、'纽约'],冻结
验证:城市,存在:true,包含:{in:CITIES}
当您意识到您的枚举类型还有其他额外的细节时,我会使用一个表。在这种情况下,我不会在这种情况下使用表

您可以使用Postgres枚举。他们可以利用并帮助保持数据的一致性。Rails也有一些关于这方面的文档


如果您的下拉列表值超过5,或者在某个时候可能会向下拉列表中添加新值,最好使用
相关表格。此外,如果经常对下拉列表值进行
更改
,则在
相关表中很容易进行更改

有一个
-一个带有下拉值的表和主表中的参考列
many-to-many
-一个带有下拉值的表格。中间表,指下拉表和主表。 ''

Constants/enum
- 如果下拉值较小,例如:性别(“男性”、“女性”、“其他”),在这种情况下可以使用
enum
,在任何情况下,新值都不会添加到下拉列表中。
''

如果不经常进行更改,那么真正的优势是什么?它是如何提高可伸缩性或数据完整性的?关于可伸缩性,您可以添加多个值或扩展下拉值的范围,在这两种情况下,如果存在相关表,则很容易实现。对于完整性—与其直接使用值,不如使用引用ID或键,这可以通过使用枚举或相关表来实现