Установить формат даты в модели ruby ​​(sinatra / datamapper) - PullRequest
3 голосов
/ 03 июня 2010

У меня есть модель ruby, которая содержит атрибут даты, который я хотел бы передать в качестве параметра в формате дд / мм / гггг.

Однако моя база данных sqlite3 хранит данные в формате гггг-ММ-дд, поэтому, когда передается дата, например 20/10/2010, она не будет считываться в базу данных.

Я использую каркас Sinatra и использую haml для создания разметки.

Мне нужно написать помощника, который берет строку даты и преобразует ее в правильный формат для БД? Или я могу установить тип формата для атрибута моделей?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 06 июня 2010

Вам не нужно беспокоиться о внутреннем представлении базы данных даты; DataMapper сделает это за вас. Вам просто нужно убедиться, что вы передаете ему действительный Date объект.

Проверьте http://ruby -doc.org / core / classes / Date.html для методов, доступных для Date класса. Для вашего примера:

require 'date'
mydate = '20/10/2010'
mydate_obj = Date::strptime(mydate, '%d/%m/%Y')
puts "#{mydate_obj}" # prints 2010-10-20
0 голосов
/ 31 января 2013

Я не знаю, может ли это помочь, некоторое время назад у меня возникла та же проблема: я использовал Rack::Utils.escape_html(params[:datetime]) для экранирования html при вводе пользователем, и если я набрал дату в поле формы, подобном этому "25/02 / 2013 "было бы отправлено в модель DataMapper следующим образом: 16/02/2013 (с экранированными html-кодами), поэтому он сохранял его неправильно (день заканчивался часом или чем-то похожим). Может быть, вы также используете метод escape_html неуклюже?

...