Ruby on Rails: Как добавить ненулевое ограничение существующего столбца с помощью переноса?

В моем приложении Rails (3.2) у меня есть куча таблиц в моей базе данных, но я забыл добавить несколько ненулевых ограничений. Я googled вокруг, но я не могу найти, как написать миграцию, которая добавляет не null в существующий столбец.

ТИА.

Ответ 2

Вы также можете использовать change_column_null:

change_column_null :table_name, :column_name, false

Ответ 3

1) FIRST: добавить столбец со значением по умолчанию

2) THEN: Удалить значение по умолчанию

add_column :orders, :items, :integer, null: false, default: 0
change_column :orders, :items, :integer, default: nil

Ответ 4

Если вы используете его в новом скрипте/схеме создания миграции, вот как мы можем его определить

class CreateUsers < ActiveRecord::Migration[5.2]
  def change
    create_table :users do |t|
    t.string :name, null: false     # Notice here, NOT NULL definition
    t.string :email, null: false
    t.string :password, null: false
    t.integer :created_by
    t.integer :updated_by 

    t.datetime :created_at
    t.datetime :updated_at, default: -> { 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP' }
   end
  end
end