ruby-on-rails - inverse_of - rails belongs_to options
validar al menos uno en has_and_belongs_to_many (5)
En Rieles 3.2.x:
validate :has_users?
def has_users?
errors.add(:base, ''Error message'') if self.users.blank?
end
Tengo un modelo con:
has_and_belongs_to_many :users
¿Cómo valido que el modelo tiene al menos un usuario en el modelo? Lo intenté:
validates_presence_of :users
Pero eso no parece darme lo que quiero ...
En los carriles 4 puedes hacerlo.
validates :users, presence: true
Josh Susser escribió un plugin que agrega un método validates_existence_of
que hace lo que usted desea. Asegura que una clave externa hace referencia a un registro que existe.
Tratar:
validates :users, :length => { :minimum => 1 }
Yo escribiría la validación personalizada:
validate :has_users?
def has_users?
# rails 2:
errors.add_to_base "Model must have some users." if self.users.blank?
end
Eso haría exactamente eso.
Nota en los rieles 3+ tienes que usar:
# rails 3+
errors.add :base, "Model must have some users." if self.users.blank?
En los rieles 4+ hay un acceso directo incorporado, por lo que simplemente puede hacer:
validates :users, presence: true