移行は、データベースを作成するとき、またはデータベースの構造を変更するときにのみ実行され、新しいレコードを保存するときは実行されません。ミハイルはbefore_save
を提案するのに正しいです 折り返し電話。モデルで次のようなことを行うことができます:
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
RANDOM()
に注意してください PostgreSQLとSQLiteで動作しますが、MySQLでは動作しません。 MySQLの場合、RAND()
を使用する必要があります 代わりに。