Обработка различных форматов даты в ROR - PullRequest
1 голос
/ 22 июня 2011

Я пытаюсь создать приложение ROR, которое позволяет пользователям вводить дату в различных форматах, таких как 31.12.11 (месяц / день / год) или 31.12.11 (день / месяц / год). Для интерпретации формата даты у меня будет поле выбора, из которого пользователь может выбрать формат даты. Я могу использовать Date.strptime(value, format).to_s() в контроллере перед сохранением записи.

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

1 Ответ

0 голосов
/ 22 июня 2011

Вы можете просто сохранить данные в том виде, как они есть (в контроллере), и иметь другое поле в модели, говорящее ему, как интерпретировать данные. Затем, в обратном вызове before_validation, вы можете попытаться проанализировать дату в соответствии с заданным форматом и записать ее в то же поле, теперь как дату. Проблемы могут возникнуть на обратном пути. Затем, чтобы снова отобразить его в представлении, вы можете написать помощники - но еще лучше - предоставить в модели метод (например, formatted_date), который будет вычислять и отображать дату.

Однако это требование звучит странно. Почему пользователь несет ответственность за выбор формата даты? Разве это не должно основываться на локали пользователя?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...