加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 时间不在heroku中更新

发布时间:2020-12-17 03:30:22 所属栏目:百科 来源:网络整理
导读:我真的很困惑可能会出错的地方. 我登录到heroku运行控制台并尝试更新数据库上的时间戳. 我运行User.find(6)看到用户有一个:next_click = 2000-01-01 …我不知道为什么它是那个值,但无论如何,我做User.update 6,{: next_click = Time.utc(2015)}它似乎正确
我真的很困惑可能会出错的地方.

我登录到heroku运行控制台并尝试更新数据库上的时间戳.

我运行User.find(6)看到用户有一个:next_click = 2000-01-01 …我不知道为什么它是那个值,但无论如何,我做User.update 6,{: next_click => Time.utc(2015)}它似乎正确地更新说2015-01-01 00:00:00,但是当我做另一个User.find(6)时似乎时间已经转回,因为它不是2015-01- 01 00:00:00

我真的很困惑,为什么不是.任何见解?

看到附加的SCREENSHOT

irb(main):033:0> User.update 6,{:next_click => Time.utc(2015) }
  User Load (34.0ms)  SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1  [["id",6]]
   (1.8ms)  BEGIN
   (2.2ms)  UPDATE "users" SET "next_click" = '2015-01-01 00:00:00.000000',"updated_at" = '2012-05-24 00:13:26.197358' WHERE "users"."id" = 6
   (2.2ms)  COMMIT
=> #<User id: 6,name: "mazlix",gold: 10,points: 10,next_click: "2015-01-01 00:00:00",created_at: "2012-05-23 23:40:39",updated_at: "2012-05-24 00:13:26">
irb(main):034:0> User.find(6)
  User Load (2.4ms)  SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1  [["id",6]]
=> #<User id: 6,next_click: "2000-01-01 00:00:00",updated_at: "2012-05-24 00:13:26">

同样的事情发生在u = User.find(6)u.next_click = Time.utc(2013)然后u.save

irb(main):001:0> u = User.find(6)
  User Load (38.8ms)  SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1  [["id",updated_at: "2012-05-24 00:57:28">
irb(main):002:0> u.next_click = Time.utc(2013)
=> 2013-01-01 00:00:00 UTC
irb(main):003:0> u
=> #<User id: 6,next_click: "2013-01-01 00:00:00",updated_at: "2012-05-24 00:57:28">
irb(main):004:0> u.save
   (10.9ms)  BEGIN
   (3.7ms)  UPDATE "users" SET "next_click" = '2013-01-01 00:00:00.000000',"updated_at" = '2012-05-24 03:05:46.059530' WHERE "users"."id" = 6
   (2.2ms)  COMMIT
=> true
irb(main):005:0> u
=> #<User id: 6,updated_at: "2012-05-24 03:05:46">
irb(main):006:0> User.find(6)
  User Load (33.0ms)  SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1  [["id",updated_at: "2012-05-24 03:05:46">

应用程序/模型/ user.rb:

class User < ActiveRecord::Base
  attr_accessible :gold,:name,:next_click,:points
end

解决方法

您已经创建了一个时间列.稍微令人困惑的是,即使在ruby时间存储时间日期,在数据库世界中存在纯时间(即只有几小时/分钟/秒)的概念,这就是当您添加类型的列时所获得的:时间到您的移民.

Ruby本身没有表示没有日期的时间的类,因此rails使用Time的实例但忽略了日期位.

如果您想要一个存储时间和日期的列,请将列更改为:datetime one(在大多数情况下,您仍会获得Time实例).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读