Ruby on rails 像往常一样设计电子邮件身份验证,但强制用户输入姓名

Ruby on rails 像往常一样设计电子邮件身份验证,但强制用户输入姓名,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,好吧,让我们来了解一下上下文,我希望Desive像往常一样行事,唯一的区别是,当用户注册时,他必须输入一个名称(不必为空) 我所取得的成就是,当用户注册时,他可以输入一个名称,问题是他可以将其留空,并且他的名称将等于“” 我是在页面上显示的帮助下完成的,即创建一个迁移,将name列添加到users表中,并将以下内容放入应用程序控制器中 class ApplicationController < ActionController::Base before_action :configur

好吧,让我们来了解一下上下文,我希望Desive像往常一样行事,唯一的区别是,当用户注册时,他必须输入一个名称(不必为空)

我所取得的成就是,当用户注册时,他可以输入一个名称,问题是他可以将其留空,并且他的名称将等于

我是在页面上显示的帮助下完成的,即创建一个迁移,将name列添加到users表中,并将以下内容放入应用程序控制器中

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name, :email, :password, :password_confirmation, :remember_me) }
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:name, :email, :password, :password_confirmation, :current_password) }
  end
end
class ApplicationController
但是后面解释的并不是我想要做的,我希望用户总是用他的电子邮件登录(就像Desive默认做的那样),正如我所说,我唯一希望的是,如果有人想注册,他必须键入一些名字,因为这不是空的


有人知道我该怎么做吗?

您需要做的是为
用户
模型添加名称验证。验证用户上是否存在名称

因此,在您的用户模型中:

validates_presence_of :name

这样,当用户提交一个名称为空的注册表单时,此验证将启动,并阻止保存此用户实例,同时将
“名称不能为空”
错误添加到表单中。

您需要做的是将名称验证添加到
用户
模型中。验证用户名在userWell上的存在,这是有史以来最快的解决方案,顺便说一句,如果你把它作为一个答案,我会接受它。