次の例のように、列のデフォルト設定をセットアップするマイグレーションがRailsにあるという問題があります。
def self.up
add_column :column_name, :bought_at, :datetime, :default => Time.now
end
後のマイグレーションでそのデフォルト設定をドロップしたい場合、railsマイグレーションを使用してどうすればよいですか?
私の現在の回避策は、次のように、rails移行でカスタムSQLコマンドを実行することです。
def self.up
execute 'alter table column_name alter bought_at drop default'
end
しかし、私はこのアプローチが好きではありません。これは、基になるデータベースがこのコマンドを解釈する方法に依存しているためです。データベースが変更された場合、このクエリはおそらく機能しなくなり、移行は中断されます。では、レールの列のデフォルト設定の取り消しを表現する方法はありますか?
CHARACTER VARYING
列のデフォルトを削除せず、単にに設定しNULL::character varying
ます。