为什么插入列中的日期被翻译为2000-01-01?

时间:2014-09-28 08:16:58

标签: ruby-on-rails

当我尝试插入表值" 28/09/2014 13:40:30.520153"一切顺利。这段代码可以做到:

before_create :set_deadline

def set_deadline
  time_for_deadline = Sla.find(self.sla_id).time_for_deadline
  self.deadline = Time.now + time_for_deadline.hours
  return self.deadline
end

来自日志:


SQL(0.9ms)INSERT INTO" request" / 一些colums / .... VALUES / 一些值 / RETURNING" id" [/ 其他一些价值...... /, ["截止日期"," 2014-09-28 13:40:30.520153"] ,/ ....其他一些...... /]]

但最终在表格中显示01-01-2000。 我认为这是因为列的类型 - ' time'尝试更改为datetime但是有错误:

错误:列"截止日期"是没有时区的时间戳类型,但表达式是字符类型的时间没有时区156提示:您需要重写或转换表达式。 :插入"请求" ("评论"," created_at","截止日期","部门","发起人","负责"," sla_id"," sla_number"," updated_at")价值(1美元,2美元,3美元,4美元,5美元,6美元,7美元,8美元, $ 9)返回" id"


create_table "requests", force: true do |t|
t.datetime "created_at"
t.datetime "updated_at"
...some colums here...
...
t.time "deadline"

出了什么问题?

1 个答案:

答案 0 :(得分:2)

您需要重新启动Rails才能获取列类型的更改。

如果您使用rails server运行应用程序,可能只需使用Control-C就可以启动它并重新启动它。

如果这不起作用,请尝试运行spring stop以强制重新加载。

如果您使用的是Unicorn或Passenger等外部服务器,则需要重新启动它。