Ruby on Rails: errores.add_to_base vs errores.agregar

He leído que los errores.add_to_base debe ser utilizado por los errores relacionados con el objeto y no un atributo específico. Estoy teniendo problemas con la conceptualización de lo que esto significa. Podría alguien poner un ejemplo de cuando quiero usar cada uno?

Por ejemplo, tengo una Banda de modelo y de cada Banda tiene un Género. Cuando me validar la presencia de un género, si el género es falta si el error que se añadirán a la base?

El más ejemplos de la mejor

Gracias!

  • Ver tercera respuesta hasta la fecha (Rails 3+) solución
InformationsquelleAutor Tony | 2009-04-01

3 Kommentare

  1. 38

    Falta un género sería un campo de error. Una base de error sería algo así como un duplicado exacto de un registro existente, donde el problema no estaba ligado a ningún sector específico, sino más bien para el registro como un todo (o al menos a una combinación de campos).

  2. 107

    Vale la pena señalar (ya que esta se muestra en los motores de búsqueda, que es la forma en que lo he encontrado) que este está en desuso. Los Rieles 3 forma de hacerlo es:

    errors[:base] << "Error message"    

    o

    errors.add(:base, "Error message")

    http://apidock.com/rails/ActiveRecord/Errors/add_to_base

    http://apidock.com/rails/v3.2.8/ActiveModel/Errors/add

    • También se puede especificar el atributo en Rails 3. errors.add(:name, "Error message") Cita: api.rubyonrails.org/classes/ActiveModel/…
    • Hay una razón para preferir cualquiera de pala en la matriz o #add?
    • .add permite opciones y tiene un valor predeterminado para el mensaje si no se da. De lo contrario, son idénticos.
    • Mi intuición prefiere errors.add(:base, "Error message'). Para lo que vale, que no es mucho.
  3. 33

    En este ejemplo, se puede ver la validación de campo (equipo debe ser elegido). Y se puede ver una clase/nivel de base de la validación. Por ejemplo, se requiere al menos un método de contacto, un teléfono o un correo electrónico:

    class Registrant
      include MongoMapper::Document
    
      # Attributes ::::::::::::::::::::::::::::::::::::::::::::::::::::::
      key :name, String, :required => true
      key :email, String
      key :phone, String
    
      # Associations :::::::::::::::::::::::::::::::::::::::::::::::::::::
      key :team_id, ObjectId
      belongs_to :team
    ...
      # Validations :::::::::::::::::::::::::::::::::::::::::::::::::::::
      validate :validate_team_selection
      validate :validate_contact_method
    ...
    
      private
    
      def validate_contact_method
        # one or the other must be provided
        if phone.empty? and email.empty?
          errors.add_to_base("At least one form of contact must be entered: phone or email" )
        end
      end
    
      def validate_team_selection
        if registration_setup.require_team_at_signup
          if team_id.nil?
            errors.add(:team, "must be selected" )
          end
        end
      end
    end
    • Gracias por los buenos ejemplos.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea