在我的 Rails 应用程序中,我有一个update
操作users
可以用来更新他们的个人资料。
我想要实现的棘手事情是,如果用户输入一个新的电子邮件地址并保存它,该电子邮件地址不会立即保存到email
数据库字段,而是保存到名为new_email
. 该字段email
应保持不变(至少在user
稍后确认该电子邮件地址之前)。
def update
current_email = @user.email
new_email = params[:user][:email].downcase.to_s
if @user.update_attributes(params[:user])
if new_email != current_email
@user.change_email(current_email, new_email)
flash[:success] = "Profile updated. Please confirm your new email by clicking on the link that we've sent you."
else
flash[:success] = "Profile updated."
end
redirect_to edit_user_path(@user)
else
render :edit
end
end
用户型号:
def change_email(old_email, new_email)
self.new_email = new_email.downcase
self.email = old_email
self.send_email_confirmation_link
end
上面的功能可以工作,但很难测试并且感觉不对。有没有更顺畅的方法来实现这一目标?
谢谢你的帮助。