part 2 : 我们来定义自己的登录名!

来源:互联网 发布:淘宝客服的岗位要求 编辑:程序博客网 时间:2024/05/21 08:39

example : login_name 代替email作为登录名

1, 首先,devise默认使用的是email作为登陆名字。

我们需要在数据库里添加一个字段为login_name

rails g migration AddLoginNameToUser login_name:string

rake db:migrate

2,   接下来,我们需要修改devise的配置文件

/config/initializers/devise.rb里找到 # config.authentication_keys = [:email]

去掉注释,修改email为你的登陆名字段

config.authentication_keys = [:login_name]

3.   我们告诉了验证的字段是login_name,那么,需要在登陆页面修改对应的登陆字段(以及其他页面对应的登陆字段)

<%= f.textl_field :login_name, autofocus: true %>

注意: 此处修改时,需将f.email_field修改为f.text_field,否则前端验证不能通过。

config.strip_whitespace_keys = [:login_name]  =>  这个是去除前后的空格.

config.password_length = 8..72   =>  修改密码长度


4更新时碰到过一个问题: 修改用户密码,报错email为空!

断点处报错为email为空!

我们需要在model重写关于email的方法,如下:

  def email_required?    false  end
  这样就可以把email必填问题给skip了。


 

ps: 对应的修改路由方法详见源码

 https://github.com/plataformatec/devise/blob/master/lib/devise/rails/routes.rb#L94


--xiaozhu_personal

0 0