Извлечь атрибут 'Datetime' Rails ActiveRecord как объект DateTime - PullRequest
1 голос
/ 17 мая 2010

У меня есть атрибут в одной из моих моделей, который содержит значение даты / времени и объявлен с использованием t.datetime :ended_on в моих миграциях.

Когда я получаю это значение, используя myevent.ended_on, я получаю Time объект. Проблема в том, что когда я пытаюсь использовать этот атрибут в качестве оси на диаграмме Flotilla , он не работает должным образом, потому что Flotilla распознает только даты как Date или DateTime объекты.

Я думал о написании виртуального атрибута, который преобразует существующее значение времени в DateTime, но я опасаюсь этого, поскольку слышал, что Time не может обрабатывать даты позже 2040 года, и я не не хочу рисковать созданием «ошибки 2040», о которой позже придется беспокоиться.

Есть ли способ убедить ActiveRecord вернуть объекты DateTime для этого атрибута вместо объектов Time?

Ответы [ 2 ]

1 голос
/ 17 мая 2010

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

class YourModel

  ....

  def ended_on
    self['ended_on'].to_datetime # if you need date object use to_date instead
  end

  ....
end

Надеюсь, это поможет

1 голос
/ 17 мая 2010

Вы можете легко конвертировать Time Объект с помощью Time::to_date или Time::to_datetime. Для получения дополнительной информации об этом: http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Time/Conversions.html#M001125

поэтому вы должны изменить свой код следующим образом:

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