嗨我是迈克尔哈特尔教程之后,我遇到了奇怪的行为。@ user.reload不按预期工作(将年份更改为2000)
在第12章密码重置,password_reset_controller,创建操作是这样的:
def create
@user = User.find_by(email: params[:password_reset][:email].downcase)
if @user
@user.create_reset_digest
@user.send_password_reset_email
flash[:info] = 'Email sent with password reset instructions'
redirect_to root_url
else
flash.now[:danger] = 'Email address not found'
render 'new'
end
end
而且create_reset_digest方法是这样的:
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
我用byebug监测变化和碰上了一个奇怪的事情:
当我尝试byebug在创建操作结束时,我得到了这个结果:
#<User id: 762146111, ..., reset_sent_at: 2016-11-11 13:47:00 UTC>
但是当我尝试看看发生了什么@ user.reload后保存,我得到:
#<User id: 762146111, ..., reset_sent_at: "2000-01-01 13:47:00">
为什么reser_sent_at切换到一年2000-01-01属性?
我试过这个,但它不工作。我甚至试着看看db:schema,它有,sent_at attrbute设置为时间>>'t.time“reset_sent_at”' – Kazik
您需要进行迁移并将属性'time'更改为'datetime' –