Ответ 1
Для Rails 4+ ответ Нейтса (с использованием change_column_null) лучше.
Pre-Rails 4, попробуйте change_column.
В моем приложении Rails (3.2) у меня есть куча таблиц в моей базе данных, но я забыл добавить несколько ненулевых ограничений. Я googled вокруг, но я не могу найти, как написать миграцию, которая добавляет не null в существующий столбец.
ТИА.
Для Rails 4+ ответ Нейтса (с использованием change_column_null) лучше.
Pre-Rails 4, попробуйте change_column.
Вы также можете использовать change_column_null:
change_column_null :table_name, :column_name, false
1) FIRST: добавить столбец со значением по умолчанию
2) THEN: Удалить значение по умолчанию
add_column :orders, :items, :integer, null: false, default: 0
change_column :orders, :items, :integer, default: nil
Если вы используете его в новом скрипте/схеме создания миграции, вот как мы можем его определить
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