频道栏目
首页 > 资讯 > 其他 > 正文

Rails默认更新用户密码策略的修改

17-02-10        来源:[db:作者]  
收藏   我要投稿

Rails默认更新用户密码策略的修改:在Rails中一切都帮你考虑到,比如在需要密码验证的model中加上如下一句。
has_secure_password

则会帮你自动创建密码,密码确认以及密码求散的逻辑,很好很强大!!!

不过有些情况下我们不希望这个默认的操作,比如用户在编辑自己的信息时,如果不修改密码,而直接点确认更新按钮,则表示密码不变.但是常规的验证是必须输入密码的!

@staff.update_attributes(staff_params)

上面一句肯定会失败,因为model中做了验证:

    has_secure_password
    VALID_PASSWORD_REGEX = /\A[^*\s]+\z/i
    validates :password,length:{minimum:6}
    validates :password,format:{with:VALID_PASSWORD_REGEX}

为了达到用户直接点击确认更新不更新密码的功能,我们需要做点调整,首先在edit的密码和密码确认框中输入一些非法字符,比如”*******”

然后在update逻辑中进行判断:

if @staff.errors.messages.count == 1 && @staff.errors.messages[:password] && params[:staff][:password] == "******"
        params[:staff].delete(:password)
        params[:staff].delete(:password_confirmation)
        @staff.update_columns(staff_params)
        flash[:success] = "#{@staff.name} 用户信息修改成功"
        redirect_to @staff
        return
      end

如果用户没有输入密码,则跳过验证直接修改model!注意因为update_columns操作不会修改记录中的updated_at日期,所以还需要一个神奇的touch方法为你解忧:

@staff.touch
相关TAG标签
上一篇:Spring框架标签
下一篇:插入排序
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站