rails inverse_of has_many foreign class_name belongs_to belongs apidock ruby-on-rails activerecord model

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