Rails Devise 编辑用户信息 password too short

Insub · 2013年01月14日 · 最后由 Insub 回复于 2013年01月21日 · 3677 次阅读

使用 Devise 搭建用户系统,自定义了一个 User controller,里面有一个方法是 setting,用于编辑用户其它信息比如 localtion 之类的,不涉及用户名和密码那一类,可是提交的时候总是告诉我,password too short,原因是我填写了 password 的 validates_length_of,不填的话,可以更新,可是这样用户注册时就可以填空密码...

Devise 有自己的 password 校验,我看了一下,允许为空: validates_length_of :password, :within => 6..128, :allow_blank => true 这样的校验没有问题的么?

项目需求是:允许登录用户编辑基本信息,但不允许更改用户名和 Email,密码可以更改,但需要输入当前密码

不知道应该怎么设置妥当呢?

validates ... :on => :update 注册和更新分开 valid

更新前需要验证当前密码 devise 有提供 update_with_password https://github.com/plataformatec/devise/blob/master/lib/devise/models/database_authenticatable.rb#L56 方法,需要你提供 params[:current_password],controller 里也就需要使用 update_with_password ,现有的 devise 提供的修改基本信息 https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb#L39 只要提供当前密码包括 email password 等其他信息都是一起改的。按照你的需求,你得自己定义个新的路由来更改信息,controller 参考 registrations#update 写就 ok 了,可以根据需求使用 update_with_passwordupdate_without_password

@vkill 谢谢~其实之前已经查到资料解决了,忘记关贴了,不好意思。

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