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.