Ruby on Rails: как добавить ограничение not null в существующий столбец с помощью миграции?
в моем приложении Rails (3.2) у меня есть куча таблиц в моей базе данных, но я забыл добавить несколько ограничений not null. Я погуглил, но не могу найти, как написать миграцию, которая добавляет NOT null к существующему столбцу.
ТИА.
4 ответов
попробовать change_column:
change_column :table_name, :column_name, :column_type, null: false
вы также можете использовать change_column_null:
change_column_null :table_name, :column_name, false
1) первый: добавить столбец со значением по умолчанию
2) затем: удалить значение по умолчанию
add_column :orders, :items, :integer, null: false, default: 0
change_column :orders, :items, :integer, default: nil
Если вы используете его на новом скрипте/схеме миграции create, вот как мы можем его определить
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