Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottengo un valore predefinito casuale per una colonna in MySQL/Rails

Le migrazioni vengono eseguite solo quando si crea un database o si apportano modifiche alla struttura del database, non quando si salva un nuovo record. Mikhail ha ragione nel suggerire un before_save richiama. Puoi fare qualcosa del genere nel tuo modello:

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

Nota che RANDOM() funziona per PostgreSQL e SQLite, ma non per MySQL. Per MySQL devi usare RAND() invece.