Migreringer køres kun, når du opretter en database eller foretager ændringer i strukturen af databasen, ikke når du gemmer en ny post. Mikhail har ret i at foreslå en before_save
ring tilbage. Du kan gøre sådan noget i din model:
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
Bemærk, at RANDOM()
virker til PostgreSQL og SQLite, men ikke til MySQL. For MySQL skal du bruge RAND()
i stedet.