设计 – Rails 4 – 无法登录

我刚开始使用Rails 4.我使用自定义字段设置了devise 。 我可以在注册后登录,但我无法从登录页面登录。 用户注册很好,我在数据库表中usernamepassword等。

有人能告诉我我错过了什么吗? 我的用户模型非常基础。 这是它的样子 –

 class User  true, :presence => {:message => '- Username cannot be blank'} validates :first_name, :presence => { :message => " - Firstname cannot be blank!"} private def user_params params.require().permit(:first_name, :last_name, :username, :email, :password, :password_confirmation) end end 

我检查了我的观点,并且我传递了正确的参数。

我的应用程序控制器中有以下内容 –

 class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception layout :layout_by_resource before_filter :configure_permitted_params, if: :devise_controller? def layout_by_resource if devise_controller? "devise" else "application" end end protected def configure_permitted_params devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:username, :first_name, :last_name, :password, :password_confirmation, :email) } end end 

我检查了数据库表,我确实usernamepassword (encrypted_pa​​ssword)。 我将我的身份validation密钥设置为username

不知道我在这里缺少什么。 我devise 3.0.0

在您的应用程序控制器中,您已经允许使用params进行sign_up,但不允许使用sign_in。 所以我你将configure_permitted_parameters方法更改为,它应该工作:

 def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:username, :password, :remember_me) } devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:username, :first_name, :last_name, :password, :password_confirmation, :email) } end