2010-12-08 4 views

Répondre

2

Vous voulez dire les valeurs par défaut? Plus simple est de définir les valeurs par défaut dans votre base de données

add_column :posts, :excerpt, :text, :default => "No excerpt available" 

validates_presence_of vérifie uniquement si une valeur est présente ou non.

En option, vous pouvez définir un crochet before_validation:

before_validation :set_values 

def set_values 
    attributes.each do |attr| 
    self.send("#{attr}=".to_sym, 'Default value') if attr.nil? 
    end 
end 
0

Je ne pense pas que vous pouvez utiliser validateurs cette fin. Les validations ne sont exécutées que lorsqu'un objet est en quelque sorte sauvegardé ou mis à jour dans la base de données, donc si vous avez déjà un tas d'enregistrements dans une table, puis écrivez une validation par la suite, cela n'affectera pas du tout les enregistrements de base de données existants. Sauf si vous essayez de les mettre à jour à nouveau. Toutefois, si vous souhaitez mettre à jour un groupe d'enregistrements avec une requête de base de données, vous pouvez utiliser un appel de méthode update_all. Il pourrait ressembler à quelque chose comme ceci:

Record.update_all "value = 'default_value'", "value IS NULL" 
+0

Référez-vous à cela pour plus d'informations http://apidock.com/rails/ActiveRecord/Base/update_all/class – Rohit

Questions connexes