使用用户名而不是电子邮件进行身份validation

我是Devise的新手,通过使用电子邮件地址作为身份validation密钥使其工作正常。 但是,我有一个需要用户名的用例,而我似乎无法让它工作。

我已经在users表中添加了一个字符串列“username”,将以下字段更改为:email到:登录表单中的用户名,并将devise.rb中的身份validation密钥更改为:username当我转到登录我遇到了这个提示:“请输入一个电子邮件地址”。

我究竟做错了什么?

**new.html.erb** 

**User.rb** class User [:username] # Setup accessible (or protected) attributes for your model attr_accessible :email, :password, :password_confirmation, :remember_me, :username # attr_accessible :title, :body end **devise.rb** config.authentication_keys = [ :username ]

在config / initializers / devise.rb中取消注释config.authentication_keys = [ :email]并将其更改为config.authentication_keys = [ :username ]

更新:
你的表格不正确。
f.text_field更改为f.text_field

  • 首先,确保运行迁移。

bundle exec rake db:migrate

  • 为Devise生成视图,否则Devise将使用默认值。

rails generate devise:views

  • 根据需要更改设计/视图(将电子邮件字段替换为用户名字段)

  • 重新启动Web服务器

希望能帮助到你!