Как мне создать полдня в Rails - PullRequest
0 голосов
/ 10 февраля 2011

Я создаю приложение в Rails, которое по сути является инструментом управления праздниками. Сотрудник просит отпуск; электронная почта отправлена ​​менеджеру на утверждение; менеджер утверждает / отклоняет и т. д.

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

Я полагаю, что я ищу мнение о том, должен ли я 1) использовать выбранную дату в сочетании с, скажем, флажком AM, чтобы создать запись DateTime в БД, например. отпуск начинается 10 февраля в AM = "2011-02-10 00:00" или 2) я должен просто записать дату в БД со ссылкой на строку AM в отдельном поле.

Я хочу вывести отпуск в виде файлов .ics и потока, так что первый вариант для меня наиболее целесообразен, но, вероятно, создаст настоящую выдумку в коде. Любые мысли или дальнейшие варианты приветствуются.

Спасибо

Robin

1 Ответ

0 голосов
/ 20 мая 2011

Почему бы не создать продолжительность (пары datetime) для каждого праздника, а не для одного?Это должно моделировать реальное представление лучше, чем просто хранить отдельные события в виде событий.


Что касается того, как обрабатывать это на уровне представления, вы, вероятно, захотите использовать шаблон Presenter, поскольку выДействительно манипулируешь событиями, а не временами.

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

Это легкий слой (обычно это обычные классы Ruby, а не AR :: Base или другие модели тяжеловесных рельсов), которые обертывают ваши модели и обычно создаются на уровне контроллера и передаются вашемувиды, а не сами модели.

http://blog.jayfields.com/2006/09/rails-model-view-controller-presenter.html http://blog.jayfields.com/2007/03/rails-presenter-pattern.html http://www.slideshare.net/adorepump/presenting-presenters-on-rails


Вот что я имею в виду: https://gist.github.com/984025

...