RailCasts のチュートリアル #274 で、Remember Me と Reset Password を見ました。彼が追加するコードは次のとおりです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