Les migrations ne sont exécutées que lorsque vous créez une base de données ou apportez des modifications à la structure de la base de données, et non lors de l'enregistrement d'un nouvel enregistrement. Mikhail a raison de suggérer un before_save
rappeler. Vous pouvez faire quelque chose comme ceci dans votre modèle :
class Model < ActiveRecord::Base
before_save :set_empty_color_to_random_value
def set_empty_color_to_random_value
self.color = Color.order("RANDOM()").first.color if self.color.empty?
end
end
Notez que RANDOM()
fonctionne pour PostgreSQL et SQLite, mais pas pour MySQL. Pour MySQL, vous devez utiliser RAND()
à la place.