Rails validation error messages: Displaying only one error message per field

后端 未结 13 884
情话喂你
情话喂你 2020-12-07 17:08

Rails displays all validation error messages associated with a given field. If I have three validates_XXXXX_of :email, and I leave the field blank, I get three

13条回答
  •  伪装坚强ぢ
    2020-12-07 17:58

    My monkey patch of ActiveModel::Errors class lib/core_ext/rails/active_model/errors.rb (I use this code for Ruby on Rails 5.0 release):

    module ActiveModel
      class Errors
    
        # don't add an attribute's error message to details
        # if it already contains at least one message
    
        alias_method :old_add, :add
    
        def add(attribute, message = :invalid, options = {})
          if details[attribute.to_sym].size.zero?
            old_add(attribute, message, options)
          end
        end
    
      end
    end
    

    Create a file config/initializers/core_ext.rb and add a require core_ext/rails/active_model/errors.rb to it.

提交回复
热议问题