Когда использовать связанную таблицу с константой для выпадающих или множественных полей? - PullRequest
2 голосов
/ 19 марта 2019

У меня есть несколько выпадающих полей, некоторые с 2, 4, 10 и 50 вариантами выбора. Это отношения has_one и own_to. У меня также есть несколько много-много отношений.

В настоящее время я использую модуль с константами для заполнения моего раскрывающегося списка.

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

Я сохраняю значения в виде строк или, если это тип отношений has_many, я сохраняю их в виде массива Postgres.

Мне сообщили, что для целостности и масштабирования данных мне следует использовать связанные таблицы с отношениями assign_to и has_one.

Как использование связанных таблиц помогает с масштабированием и целостностью данных? Когда бы вы посоветовали использовать CONSTANT и когда следует использовать связанную таблицу?

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Если ваше раскрывающееся значение превышает 5 или в какой-то момент в него могут быть добавлены новые значения, лучше использовать related tables.Также, если в раскрывающихся значениях, сделанных frequently, может быть changes, то легко сделать в 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'

0 голосов
/ 19 марта 2019

Это зависит от вашего выбора.Я сделал ситуации, когда я использовал встроенный массив для проверки для проверки типа.Например,

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

Я бы использовал таблицу, когда вы поймете, что есть какие-либо дополнительные подробности о ваших типах перечислений.В этой ситуации я бы не использовал таблицу для этого сценария.

Что вы могли бы сделать, это использовать Postgres Enums.Они могут использовать ваши данные и поддерживать их согласованность.Rails также имеет некоторую документацию по этому поводу.

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

...