我有問題,我有Rails中的遷移,設置了一個默認的設置列,這樣的例子:Rails遷移:撤消默認設置列
def self.up
add_column :column_name, :bought_at, :datetime, :default => Time.now
end
想,我喜歡在稍後的遷移中刪除這些默認設置,我如何使用rails遷移來實現這一點?
我目前的解決方法是在鐵軌遷移自定義SQL命令的執行,就像這樣:
def self.up
execute 'alter table column_name alter bought_at drop default'
end
但我不喜歡這種方式,因爲我現在依賴於底層數據庫是如何解釋這個命令。在數據庫發生變化的情況下,這個查詢可能不再起作用,並且遷移將被打破。那麼,有沒有辦法在rails中表達一個列的默認設置?
在postgres中,這實際上不會放棄`CHARACTER VARYING`列的默認值,只需將其設置爲`NULL :: character varying `。 – 2014-10-27 10:36:34
在更新的版本中,您可以使其可逆。例如:`change_column_default(:table_name,:column_name,from:nil,to:false)` – Mark 2017-02-23 19:17:15