嗨我是邁克爾哈特爾教程之後,我遇到了奇怪的行爲。@ 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' –