Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obtenho um valor padrão aleatório para uma coluna no MySQL/Rails


As migrações são executadas apenas quando você cria um banco de dados ou faz alterações na estrutura do banco de dados, não ao salvar um novo registro. Mikhail está correto ao sugerir um before_save ligue de volta. Você pode fazer algo assim no seu modelo:
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

Observe que RANDOM() funciona para PostgreSQL e SQLite, mas não para MySQL. Para MySQL você tem que usar RAND() em vez de.