В моем приложении Rails (3.2) в моей базе данных есть несколько таблиц, но я забыл добавить несколько ненулевых ограничений.Я погуглил, но не могу найти, как написать миграцию, которая добавляет ненулевое значение к существующему столбцу.
TIA.
Вы также можете использовать change_column_null :
change_column_null :table_name, :column_name, false
Для Rails 4+ лучше использовать ответ Нейтса (используя change_column_null ).
Pre-Rails 4, попробуйте change_column .
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