如何删除重复的验证错误

ana*_*ter 11 validation ruby-on-rails devise ruby-on-rails-3 simple-form

我在注册表单上遇到问题.它是使用SimpleForm创建的,使用Devise进行身份验证.提交表单时,如果电子邮件或密码为空,则会显示两次错误.在用户模型中,存在对名字,姓氏,配置文件名称,密码和电子邮件的存在验证.这些重复错误仅显示在空白电子邮件和密码字段中.任何其他空白字段都会这样说一次.

例:

#错误禁止此用户被保存:

  • 电子邮件不能为空
  • 电子邮件不能为空
  • 密码不能为空
  • 密码不能为空

user.rb:

    class User < ActiveRecord::Base

      devise :database_authenticatable, :registerable,
           :recoverable, :rememberable, :trackable, :validatable

      attr_accessible :email, :password, :password_confirmation, :remember_me, :first_name, :last_name, :profile_name

      validates :first_name, :last_name, :email, :profile_name, :password, presence: true

      validates :profile_name, uniqueness: true,
                               format: {
                                  with: /^[a-zA-Z0-9_-]+$/
                               }
      has_many :posts

      def full_name
        first_name + " " + last_name
      end
    end
Run Code Online (Sandbox Code Playgroud)

注册/ new.html.erb:

  <%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
    <%= devise_error_messages! %>

    <div class="formGroupLeft">
      <%= f.input :first_name, :input_html => { :class => 'formGroupInput'} %>
    </div>
    <div class="formGroupRight">
      <%= f.input :last_name, :input_html => { :class => 'formGroupInput'} %>
    </div>
    <div class="formGroupLeft">
      <%= f.input :email, :input_html => { :class => 'formGroupInput'} %>
    </div>
    <div class="formGroupRight">
      <%= f.input :profile_name, :input_html => { :class => 'formGroupInput'} %>
    </div>
    <div class="formGroupLeft">
      <%= f.input :password, :input_html => { :class => 'formGroupInput'} %>
    </div>
    <div class="formGroupRight">
      <%= f.input :password_confirmation, :input_html => { :class => 'formGroupInput'} %>
    </div>

    <div class="formActions">
      <%= f.button :submit, "Sign Up" %>
    </div>

  <% end %> 
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我该如何尝试修复它?

Fio*_*a T 37

看起来你已经指定了设计有效的插件,它增加了电子邮件/密码验证.

class User
  devise :database_authenticatable, ... :validatable
end
Run Code Online (Sandbox Code Playgroud)

由于您指定了自己的验证,我将省略设计验证插件.