我已经设置了一个使用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
答案 0 :(得分:0)
根据rails指南,验证码是可以的。请检查用户名参数是否转到控制器。如果参数变为空,则存在真实验证失败并可能出现该错误。
另请参阅应用程序控制器中是否在用户名中正确定义了已清理的属性。(设计)