Хранение атрибутов с несколькими целочисленными значениями

0

Мне нужно сохранить динамическое число целочисленных атрибутов (1-8). Я храню их в отдельных столбцах в таблице базы данных, например:

attribute_1, attribute_2, ..., attribute_8

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

Они назначаются значениям по умолчанию (но являются переопределяемыми в форме) и представляют собой уникальные идентификаторы для пользователя.

Например, заваривание состоит из восьми партий, прежде чем их смешивают в ферментере. Пивовар может захотеть вернуться и обратиться к любому из них по его уникальному идентификационному номеру. Я назначаю эти уникальные значения на основе последнего максимального значения при создании нового Brew. Тем не менее, пользователь может захотеть переопределить эти значения по умолчанию на некоторые другие номера.

В большинстве случаев (более мелкие пивоварни) они, вероятно, будут использовать только первые два, но некоторые более крупные пивоваренные заводы будут использовать все восемь.

Должен быть лучший способ сохранить их, чем иметь восемь разных атрибутов с тем же именем и числом в конце.

Я использую MySQL. Есть ли простой/сжатый способ хранения массива или хэша JSON, но все же можно редактировать эти значения в форме?

  • 0
    Начиная с MySQL 5.7.8, MySQL поддерживает собственный тип данных JSON . ActiveRecord также может «сериализовать» столбцы, где он преобразует данные в YAML или JSON и сохраняет их в виде строки. api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/...
  • 0
    Но я бы подумал, не стоит ли вам использовать две отдельные таблицы и установить связь между ними.
Теги:
database
activerecord

1 ответ

1

Я бы не хранил такие атрибуты. Это ограничит вас в будущем. Скажем, вы хотите знать, какие пивовары использовали атрибут_4? Вам нужно будет отсканировать всю таблицу варочных панелей, откройте поле атрибутов и деконструируйте ее, чтобы увидеть, есть ли там 4.

Гораздо лучше отделить Brew и Attributes в двух таблицах и связать их так:

Изображение 174551

Еще одно преимущество - легко добавлять атрибуты.

Хранение JSON в порядке, как указывал @max. Я просто предлагаю нормализованную базу данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню