添加到哈希后,“时间”被更改为“日期时间”

时间:2015-08-13 03:07:08

标签: ruby-on-rails hash casting model controller

我的控制器创建了一个名为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控制台中的类型来验证这一点)但是当模型时timedatetime创建了。

导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:2)

虽然您的数据库可能支持"时间" column(意思是没有日期信息的时间),Rails默认不会(很大程度上是因为Ruby的标准库 - 甚至Time都不包含日期信息)。因此,当您将其分配给模型时,Rails会将其强制转换为它知道如何处理的类型DateTime。所以,你有几个选择:

  1. 忽略使用时的日期部分。

  2. 使用像tod之类的gem来处理您的仅限时间类型,并按照自述文件中的指南将其连接到Rails。

  3. start_time_hourstart_time_minutes存储在两个单独的列中,并根据需要使用它们(例如,Date.current + start_time_hour.hours + start_time_minutes.minutes)。

  4. 希望有所帮助!