使用Devise注册用户名的问题

时间:2016-02-11 06:50:26

标签: ruby-on-rails ruby devise

我已经设置了一个使用devise作为身份验证宝石的rails应用。但是,我希望用户选择一个随机用户名,而不是与我分享他/她的电子邮件。我按照here的说明进行操作。但问题是,每当我尝试使用用户名(使用空用户数据库)进行注册时,表单都会显示错误username is invalid。这里提供的是我正在运行的验证:

devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  validates :username, :uniqueness =>{
              :case_sensitive => false
            }, presence: true

我不知道如何解决这个问题。任何帮助都会非常好。

编辑:为了更全面地了解情况,请在注册时查看服务器日志:

Started POST "/users" for ::1 at 2016-02-11 14:29:55 +0530

Processing by Devise::RegistrationsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"mM1N0AgxfoqXz4448EgHoSYz03Hdr3nX/WH1f+siRP/26VNWz4VS5lJ2I4NJjXcucgWxFvgIyON+7zwFXAESgw==", "user"=>{"username"=>"ankit0912", "email"=>"", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
   (0.1ms)  begin transaction
  User Exists (0.2ms)  SELECT  1 AS one FROM "users" WHERE LOWER("users"."username") = LOWER('ankit0912') LIMIT 1
   (0.1ms)  rollback transaction

感谢。

Edit2:Users_Controller

class UsersController < ApplicationController
  def index
    @users = User.order(:karma :desc).limit(25)
  end

  def show
    @user = User.find(params[:id])
  end

  def update
    @user = User.find(params[:id])
    @user = @user.update(user_params)
    if @user.save
      flash[:notice] = "Record Updated"
    else
      redirect_to :action => "show", :id => @user.id
    end
  end

  private
  def user_params
    params.require(:user).permit(:email)
  end
end

1 个答案:

答案 0 :(得分:0)

根据rails指南,验证码是可以的。请检查用户名参数是否转到控制器。如果参数变为空,则存在真实验证失败并可能出现该错误。

另请参阅应用程序控制器中是否在用户名中正确定义了已清理的属性。(设计)