ruby-on-rails - 时区差异
问题描述
我正在尝试使用 Rails 教程开发应用程序。我在第12章和麻烦。当我从密码重置表单发送电子邮件但 reset_at 时间添加错误时间。在控制台中,我可以获得正确的时间。有谁能帮助我吗?谢谢。
模型/用户.rb
def create_reset_digest
self.reset_token = User.new_token
update_attribute(:reset_digest, User.digest(reset_token))
update_attribute(:reset_sent_at, Time.zone.now)
end
在控制台中(“reset_sent_at”是错误的时间)
>> User.first
User Load (0.2ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT ? [["LIMIT", 1]]
=> #<User id: 1, name: "Example User", email: "example@railstutorial.org", created_at: "2019-12-27 19:18:17", updated_at: "2019-12-29 13:03:12", password_digest: "$2a$10$jbZmEQiB6reX6e/ieGC4wu1lVALDE0GHlkPPeIbUaGe...", remember_`enter code here`digest: nil, admin: true, activation_digest: "$2a$10$t2pk3NPXsvpYcVlrnB4nh.jOZu4YEyKih5wMqneuia2...", activated: true, activated_at: "2019-12-27 19:18:17", reset_digest: "$2a$10$UExX5u5qsCrwuCzyz5xicObm9w98.XWHQuxoDT7vlzC...", reset_sent_at: "2000-01-01 13:03:12">
在控制台中(我可以得到正确的时间)
Time.zone.now
=> Sun, 29 Dec 2019 22:23:40 JST +09:00
>>
为什么?
解决方案
我解决了这个问题。当我向下面这样的用户表添加列时,我犯了一个错误。
class AddAdtivationToUsers < ActiveRecord::Migration[5.1]
def change
add_column :users, :activation_digest, :string
add_column :users, :activated, :boolean, default: false
add_column :users, :activated_at, :datatime # here is the point of mistake.
# I should have write ":datetime"
end
end
推荐阅读
- typescript - 如何在打字稿中使用 sigleton() 在构造函数中传递值?
- c++ - 给定值之前触发的函数
- postgresql - 在 knex 查询中使用 postgres 函数“arr agg”时出错
- java - 有没有办法在一个安卓设备上同时使用两个外部音量键来获得第三个独特的输出?
- c++ - 如何为非字符串的自定义选项值类型处理 Boost::program_options 配置文件中的空格?
- javascript - React 没有重新渲染
- javascript - 数据表不想从 API 中提取数据
- arduino-uno - 使用数组时arduino冻结
- c# - 如何设置redirect_uri登录google .Net Core 2,Docker
- f# - 对象同步异常仅在使用断点时,在 F#