我有问题,我有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