Поведение Datamapper DateTime to String - PullRequest
0 голосов
/ 24 августа 2009

Я пишу свой первый проект, использующий Datamapper в качестве ORM, поэтому, пожалуйста, будьте терпеливы. :)

Я пытаюсь получить строку из поля DateTime:

Error.first.submitted_at.to_s => "2009-08-24T12: 13: 32 + 02: 00"

Возвращенная строка не подходит для меня. В ActiveRecord я могу сделать что-то подобное:

Error.first.submitted_at.to_s (: only_date)

или любой другой форматировщик даты. Есть ли что-нибудь подобное в DataMapper или я должен использовать метод strftime?

1 Ответ

1 голос
/ 24 августа 2009

Эта функция доступна с помощью AcitveSupport. Вы можете сделать require 'activesupport', чтобы получить его. Это может быть излишним, хотя. Вы также можете использовать #stamp из Facets , чтобы сделать то же самое, но вы должны установить формат :only_date:

require 'facets/date'

Date::FORMAT[:only_date] = '%d.%m.%y'  # For Date objects
Time::FORMAT[:only_date] = '%d.%m.%y'  # For DateTime objects

d = DateTime.now
d.stamp(:only_date)  # => "24.08.09"

Если вы действительно хотите использовать его с методом to_s, вы также можете сделать это:

require 'facets/date'

Date::FORMAT[:only_date] = '%d.%m.%y'  # For Date objects
Time::FORMAT[:only_date] = '%d.%m.%y'  # For DateTime objects

class DateTime
  alias :default_to_s :to_s
  def to_s(format=nil)
    if format.nil?
      default_to_s
    else
      stamp format
    end
  end
end

d = DateTime.now
d.to_s(:only_date)  # => "24.08.09"    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...