获取Rails ActiveRecord’datetime’属性作为DateTime对象

我的一个模型中有一个包含日期/时间值的属性,并在我的迁移中使用t.datetime :ended_on声明。

当我使用myevent.ended_on获取此值时,我得到一个Time对象。 问题是,当我尝试将此属性用作Flotilla图表中的轴时,它无法正常工作,因为Flotilla仅将日期识别为DateDateTime对象。

我想过编写一个将现有Time值转换为DateTime的虚拟属性,但是我很担心这样做,因为我听说时间不能处理2040年以后的日期,我不希望有可能造成“2040虫子”后来担心。

有没有什么办法可以说服ActiveRecord为这个属性而不是Time对象返回DateTime对象?

您始终可以创建一个方法来覆盖该属性,如下所示:

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

希望这会有所帮助

您可以使用Time::to_dateTime::to_datetime轻松转换Time对象。 有关这方面的更多信息: http : //api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Time/Conversions.html#M001125

所以你应该改变你的代码:

 myevent.ended_on.to_date # or myevent.ended_on.to_datetime