何时使用相关表vs常量来下拉或多选字段?

问题描述 投票:2回答:2

我有一些下拉字段,其中有2个,4个,10个和50个选项。这是has_one和belongs_to关系。我也有很多关系。

目前,我正在使用带有CONSTANT的模块来填充我的下拉列表。

SOFTWARE = [ "Windows, "OSX", "iOS", "Word", "Excel"]

我将值存储为字符串,或者如果它是has_many类型的关系,我将其存储为Postgres数组。

我被告知我应该使用相关表,其中belongs_to和has_one关系用于数据完整性和扩展。

使用相关表如何帮助缩放和数据完整性?您何时会建议使用常数以及何时使用相关表格?

ruby-on-rails rails-activerecord ruby-on-rails-5.2
2个回答
0
投票

这取决于您的选择。我已经完成了使用内置数组检查类型验证的情况。例如,

CITIES = ['Toronto', 'Vancouver', 'New York'].freeze
validates :city, presence: true, inclusion: { in: CITIES }

当你意识到你的枚举类型有任何其他额外的细节时,我会使用一个表。在这种情况下,我不会在这种情况下使用表格。

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

https://edgeguides.rubyonrails.org/active_record_postgresql.html#enumerated-types


0
投票

如果您的下拉值超过5或者某个时候可能会在下拉列表中添加新值,则最好使用related tables。此外,如果可能有changes到下拉值,使frequently然后很容易在related table

has_one - 一个带有下拉值的表和主表many_to_many中的引用列 - 一个带有下拉值的表。中间表,它指的是下拉表和主表。 'https://guides.rubyonrails.org/association_basics.html'

Constants/enum-如果下拉值较小,例如:性别(“男性”,“女性”,“其他”)在这种情况下可以使用enum,因为在任何情况下都不会将新值添加到下拉列表中。 'https://api.rubyonrails.org/v5.2.2/classes/ActiveRecord/Enum.html'

© www.soinside.com 2019 - 2024. All rights reserved.