validator validations validates_presence_of validates rails method greater_than custom create ruby-on-rails ruby validation model

validations - Ruby on Rails: errors.add_to_base vs. errors.add



rails validates if (3)

En este ejemplo, puede ver la validación de campo (se debe elegir equipo). Y puede ver una validación de nivel de clase / base. Por ejemplo, requirió 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

He leído que errors.add_to_base se debe usar para los errores asociados con el objeto y no para un atributo específico. Tengo problemas para conceptualizar lo que esto significa. ¿Podría alguien proporcionar un ejemplo de cuándo me gustaría usar cada uno?

Por ejemplo, tengo un modelo de Banda y cada Banda tiene un Género. Cuando valido la presencia de un género, si el género falta, ¿debería agregarse el error a la base?

Cuantos más ejemplos, mejor

¡Gracias!


Un género faltante sería un error de campo. Un error de base sería algo así como un duplicado exacto de un registro existente, donde el problema no estaba vinculado a ningún campo específico, sino al registro como un todo (o al menos a una combinación de campos).