我的控制器创建了一个名为as
的东西。当我在添加到start_time
哈希之前打印start_time
的值时,这是我得到的:
LittleClassSession
好的,它看起来像22:45:00
类型的值。在将其添加到哈希后,我向控制器询问time
值是什么。
:start_time
以下是它的内容:
@little_class_session = LittleClassSession.new({
...
:start_time => start_time
})
puts @little_class_session.start_time
它似乎格式化为2000-01-01 22:45:00 UTC
,但询问datetime
属性的.class
会返回:
start_time
Time
LittleClassSession
列是表格中的start_time
(我可以通过检查Rails控制台中的类型来验证这一点)但是当模型时time
是datetime
创建了。
导致这种情况的原因是什么?
答案 0 :(得分:2)
虽然您的数据库可能支持"时间" column(意思是没有日期信息的时间),Rails默认不会(很大程度上是因为Ruby的标准库 - 甚至Time
都不包含日期信息)。因此,当您将其分配给模型时,Rails会将其强制转换为它知道如何处理的类型DateTime
。所以,你有几个选择:
忽略使用时的日期部分。
使用像tod之类的gem来处理您的仅限时间类型,并按照自述文件中的指南将其连接到Rails。
将start_time_hour
和start_time_minutes
存储在两个单独的列中,并根据需要使用它们(例如,Date.current + start_time_hour.hours + start_time_minutes.minutes
)。
希望有所帮助!