2016-03-11 2 views
0

Если я хочу иметь запись в Rails, которая имеет много опций, например, выбор времени, то какой лучший метод для хранения этого в записи? Я действительно не хочу настраивать время как объекты и использовать has_many, поскольку с 12:17 вечера на самом деле не имеет смысла как объект. Что я использую, чтобы поместить список переменных в ActiveRecord?Ruby on Rails: ActiveRecord со списком данных (например, has_many для фрагментов данных, а не объектов)

В качестве примера рассмотрим БД видео в видео коллекции. И для каждого видео нам нужен список всех дат, на которые он смотрел. Нам также не нужно искать даты по всем видео, мы просто хотим иметь возможность перечислять и, возможно, редактировать даты для данного видеообъекта.

+1

Какое использование этих времен/предметов? они просто отображаются. Вам нужно будет их искать? что-то другое? какую базу данных вы используете? (также время автономное может не иметь смысла в качестве объекта, но есть другие данные, привязанные к времени) – Doon

+0

Спасибо за вопрос - я обновлю исходное сообщение на примере. –

ответ

0

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

Таблицы базы данных часто создаются, которые не очень хороши - например, объединяют таблицы. Возможно, модель можно было бы назвать TimeOption, и у нее был бы внешний ключ. Похоже, вы уже понимаете, как это сделать.

Я также предполагаю, что параметры являются динамическими, иначе их можно просто сохранить в константе приложения.

Другой вариант - использовать тип данных массива Postgres, который является новым, но я не использовал его.

Другой вариант - сериализовать массив Times в json, yaml или csv, а затем сохранить сериализованную строку в базе данных. Уничтожьте данные, чтобы прочитать их и выполнить повторный сеанс для сохранения.

+0

Я использую sqlite3, но я предполагаю, что смогу перейти и изучить Postgres, но кажется, что это должно быть просто с sqlite3 или MySQL. Он имеет возможность отслеживать has_many, поэтому у него должен быть механизм хранения списков. Хотя на самом деле сериализация массива имеет смысл, если данные довольно регулярные (например, время) - я думаю, что это может быть самое простое решение, хотя и разочаровывает, если это единственное разумное решение. –

+0

В вашем примере я бы утверждал, что вы можете хранить данные о просмотре. Movie has_many viewings, и этот просмотр содержит дату/время, кто его просматривал, и т. Д., Но если нет, то либо сериализация, либо тип данных массива - это то, на что я бы посмотрел (вот почему я спросил, в какой БД вы используете) – Doon