Как сохранить продолжительность времени в модели с Rails? - PullRequest
2 голосов
/ 04 апреля 2011

Я могу придумать два решения:

1) Хранить часы, минуты, секунды и т. Д. В отдельных столбцах базы данных

  • Недостаток: много столбцов

2) Преобразовать и сохранить количество секунд

  • Мы по-прежнему хотим иметь возможность отображать отдельные поля для часа, минуты, секунды и т. Д. В форме. Мы могли бы написать виртуальный атрибут для каждого из них и написать обратный вызов before_save, который преобразует временной интервал в секунды (все еще беспорядочно).

Мне не хватает другого очевидного решения? Как вы, люди, делаете это?

Ответы [ 2 ]

3 голосов
/ 04 апреля 2011

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

Rails (activesupport) также дает вам замечательные методы для работы со временем.Например, если ваша продолжительность в секундах, вы можете легко добавить продолжительность в секундах к определенному моменту времени и получить время окончания:

end_time = Time.now + duration_in_secs

Это немного больше работыиспользуя виртуальные атрибуты, чтобы отделить это, но по моему опыту, это не так много работы.возможно, есть плагин или гем, который упрощает его.

1 голос
/ 04 апреля 2011

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

...