Gem Devise 如何将更新密码和更新用户个人信息分开?

jokry · 2012年03月11日 · 最后由 jokry 回复于 2012年03月12日 · 3510 次阅读

在功能设计上,将修改密码和修改个人信息分开,如 ruby-china。

我查看 ruby-china 的代码:

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name, :by => :pwd), :html => { :method => :put }) do |f| %> ....

在 action 参数与 hidden 里都加入 :by => pwd,但在 action 中没有查到相应的判断与区分。而 devise 文档里也没有该类似的说明。

我使用的 devise 2.0

我记得加上这个,修改密码后不需要重新登陆

本身设计上就应该分开吧?修改密码需要原始密码的啊

覆盖 update_with_password 方法:

def update_with_password(params={})
  if !params[:current_password].blank? or !params[:password].blank? or !params[:password_confirmation].blank?
    super
  else
    params.delete(:current_password)
    self.update_without_password(params)
  end
end

需要 登录 后方可回复, 如果你还没有账号请 注册新账号