Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erhalte ich einen zufälligen Standardwert für eine Spalte in MySQL/Rails

Migrationen werden nur ausgeführt, wenn Sie eine Datenbank erstellen oder Änderungen an der Struktur der Datenbank vornehmen, nicht beim Speichern eines neuen Datensatzes. Mikhail schlägt zu Recht ein before_save vor zurückrufen. Sie können in Ihrem Modell so etwas tun:

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

Beachten Sie, dass RANDOM() funktioniert für PostgreSQL und SQLite, aber nicht für MySQL. Für MySQL müssen Sie RAND() verwenden stattdessen.