1

updated_at 列は更新時にすべての属性を参照するため、いつ更新するかを決定する new_updated_at を追加したいと思います。

移行による挿入時のデフォルト値は、現在の updated_at にしたいです。

移行のデフォルト値を同じ行の別の列の値に設定するにはどうすればよいですか?

4

1 に答える 1

6

手動で初期化を行う必要があると思います。up移行の SQL の簡単なビットがそれを処理します。

def up
    # Add the new column...
    connection.execute('update models set new_updated_at = updated_at')
end

modelsもちろん、実際のテーブル名に置き換える必要があります。

up生成された移行を変更し、個別のdownメソッドに分割する必要があるかもしれませんが、それは問題にはなりません。それをしたくない場合は、別の移行を記述して初期化new_updated_atし、上記のconnection.execute呼び出しをその移行のupメソッドに入れます。

于 2013-01-07T22:20:13.627 に答える