2009-06-04 11 views

Répondre

29

Je voudrais écrire une validation personnalisée:

validate :has_users? 

def has_users? 
    errors.add_to_base "Model must have some users." if self.users.blank? 
end 

qui ferait exactement.

+8

Je devais utiliser 'self.errors.add: base," Model doit avoir des utilisateurs. " ' –

+0

Cela ne fonctionne pas dans Rails 3.2 –

1

Josh Susser a écrit une plugin qui ajoute une méthode validates_existence_of qui fait ce que vous voulez. Il s'assure qu'une clé étrangère référence un enregistrement qui existe.

+0

Cela semblait prometteur, mais il ne fonctionne pas: "Impossible de valider l'existence de: users car ce n'est pas une association belongs_to." On dirait que c'est seulement pour belongs_to ... – cmaughan

+0

C'est correct. Qu'y a-t-il à l'autre bout de votre association? –

2

Dans Rails 3.2.x:

validate :has_users? 

def has_users? 
    errors.add(:base, 'Error message') if self.users.blank? 
end 
27

En rails 4, vous pouvez simplement faire

validates :users, presence: true 
0

Essayez:

validates :users, :length => { :minimum => 1 } 
Questions connexes