Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir une valeur par défaut aléatoire pour une colonne dans MySQL/Rails

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.