Migreringar körs bara när du skapar en databas eller gör ändringar i databasens struktur, inte när du sparar en ny post. Mikhail har rätt när han föreslår en before_save
ring tillbaka. Du kan göra något så här i din modell:
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
Observera att RANDOM()
fungerar för PostgreSQL och SQLite, men inte för MySQL. För MySQL måste du använda RAND()
istället.