sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo obtengo un valor predeterminado aleatorio para una columna en MySQL/Rails?

Las migraciones solo se ejecutan cuando crea una base de datos o realiza cambios en la estructura de la base de datos, no cuando guarda un nuevo registro. Mikhail tiene razón al sugerir un before_save llamar de vuelta. Puedes hacer algo como esto en tu 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

Tenga en cuenta que RANDOM() funciona para PostgreSQL y SQLite, pero no para MySQL. Para MySQL tienes que usar RAND() en su lugar.