我有一个问题,我在 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 中列的默认设置?
def change change_column_default( :table_name, :column_name, from: nil, to: false ) end
def up change_column_default( :table_name, :column_name, nil ) end def down change_column_default( :table_name, :column_name, false ) end