我安装了Devise的默认设置 – 即使用您的电子邮件地址注册/使用.但是,我希望用户能够使用用户名而不是他们的电子邮件地址进行注册.我根据要更改的参数来跟踪railscast,以及我可以在这里找到的任何建议,我可能需要为Rails 4更改.但是,每当我尝试创建新用户时,我都会收到错误’电子邮件不能为空白’.有没有人知道造成这种情况的原因,以及我如何解决这个问题?谢谢!!
码:
应用控制器:
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 before_filter :configure_permitted_parameters,if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username,:password,:password_confirmation) } devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:username,:remember_me) } endend
登录(注册表单几乎相同):
<%= form_for(resource,:as => resource_name,:url => session_path(resource_name)) do |f| %> <div><%= f.label :username %><br /> <%= f.text_fIEld :username,:autofocus => true %></div>
在devise.rb配置中:
config.authentication_keys = [ :username ]
用户控制器:
private # Use callbacks to share common setup or constraints between actions. def set_user @user = User.find(params[:ID]) end# Never trust parameters from the scary internet,only allow the white List through.def user_params params.require(:user).permit(:first_name,:mIDdle_names,:last_name,:date_of_birth,:gender,:line_1,:line_2,:line_3,:town,:county,:postcode,:contact_number,:email,:username,:password_confirmation,:remember_me)end
user.rb:
protected def self.find_for_database_authentication(warden_conditions) conditions = warden_conditions.dup login = conditions.delete(:login) where(conditions).where(["lower(username) = :value",{ :value => login.downcase }]).first end解决方法 从User model devise部分中删除valIDatable – 此选项验证电子邮件地址的存在,唯一性和格式.但是,您必须手动添加自己的密码存在,确认和长度验证. 总结
以上是内存溢出为你收集整理的使用Devise with Rails 4登录用户名全部内容,希望文章能够帮你解决使用Devise with Rails 4登录用户名所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)