我观看了关于记住我和重置密码的 RailCast 教程 #274。他添加的代码如下user.rb
def send_password_reset
generate_token(:password_reset_token)
save!
UserMailer.password_reset(self).deliver
end
def generate_token(column)
begin
self[column] = SecureRandom.urlsafe_base64
end while User.exists?(column => self[column])
end
这里我不明白的是为什么save!
里面的电话send_password_reset
?另外,我不熟悉generate_token
:中的语法self[column]=
。这是在数据库表中设置列的方法吗?
下面是create
动作password_resets_controller
def create
user = User.find_by_email(params[:email])
user.send_password_reset if user
redirect_to root_path, notice: "Email sent with password reset instructions."
end