获取Rails ActiveRecord’datetime’属性作为DateTime对象
我的一个模型中有一个包含日期/时间值的属性,并在我的迁移中使用t.datetime :ended_on
声明。
当我使用myevent.ended_on
获取此值时,我得到一个Time
对象。 问题是,当我尝试将此属性用作Flotilla图表中的轴时,它无法正常工作,因为Flotilla仅将日期识别为Date
或DateTime
对象。
我想过编写一个将现有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_date
或Time::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