Rails migrations: Undo default setting for a column

后端 未结 4 680
鱼传尺愫
鱼传尺愫 2020-12-22 19:36

I have the problem, that I have an migration in Rails that sets up a default setting for a column, like this example:

def self.up
  add_column :column_name,          


        
相关标签:
4条回答
  • 2020-12-22 19:58

    Rails 5+

    def change
      change_column_default( :table_name, :column_name, from: nil, to: false )
    end
    

    Rails 3 and Rails 4

    def up
      change_column_default( :table_name, :column_name, nil )
    end
    
    def down
      change_column_default( :table_name, :column_name, false )
    end
    
    0 讨论(0)
  • 2020-12-22 19:59

    The following snippet I use to make NULL columns NOT NULL, but skip DEFAULT at schema level:

    def self.up
      change_column :table, :column, :string, :null => false, :default => ""
      change_column_default(:table, :column, nil)
    end
    
    0 讨论(0)
  • 2020-12-22 20:05

    Sounds like you're doing the right thing with your 'execute', as the docs point out:

    change_column_default(table_name, column_name, default)
    

    Sets a new default value for a column. If you want to set the default value to NULL, you are out of luck. You need to DatabaseStatements#execute the appropriate SQL statement yourself. Examples

    change_column_default(:suppliers, :qualification, 'new')
    change_column_default(:accounts, :authorized, 1)
    
    0 讨论(0)
  • 2020-12-22 20:17

    Rails 4

    change_column :courses, :name, :string, limit: 100, null: false
    
    0 讨论(0)
提交回复
热议问题