我有一个问题,我在 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
但我不喜欢这种方法,因为我现在依赖于底层数据库如何解释此命令。如果数据库发生更改,此查询可能不再有效,并且迁移将被破坏。那么,有没有一种方法可以表达对 Rails 中列的默认设置的撤消?
最佳答案
Rails 5+
def change
change_column_default( :table_name, :column_name, from: nil, to: false )
end
Rails 3 和 Rails 4
def up
change_column_default( :table_name, :column_name, nil )
end
def down
change_column_default( :table_name, :column_name, false )
end
关于ruby-on-rails - Rails 迁移 : Undo default setting for a column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/887246/