Миграция Rails: снятие ограничения

У меня есть таблица в приложении Rails, которая (в schema.rb) выглядит так:

create_table "users", :force => true do |t|
   t.string "name", :null=>false
   t.string "address", :null=>false
end

Я хотел бы написать миграцию рельсов, чтобы разрешить нули для поля адреса. т.е. после миграции таблица выглядит так:

create_table "users", :force => true do |t|
   t.string "name", :null=>false
   t.string "address"
end

Что мне нужно сделать, чтобы снять ограничение?


person Jay Godse    schedule 15.04.2011    source источник


Ответы (2)


Не уверены, что можете позвонить t.address? В любом случае ... Я бы использовал change_column вот так

change_column :users, :address, :string, :null => true

Документы ... http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_column

person Paul Sturgess    schedule 15.04.2011

В Rails 4+ для удаления ограничения not-null вы можете использовать change_column_null :

change_column_null :users, :address, true
person deepak    schedule 31.01.2014
comment
Вы действительно пробовали это? Если вы посмотрите на исходный код функции, вы не увидите ничего, кроме: raise NotImplementedError, "change_column_null is not implemented" - person drusepth; 23.10.2014
comment
использовали его в postgresql. rails определяет его в адаптере базы данных, см. postgres, mysql. может искать других в apidock. Итак, придется проверить адаптер базы данных на предмет поддержки, на случай, если кто-то получит NotImplementedError - person deepak; 24.10.2014
comment
Голосовать за! Вот ссылка на руководства по Rails. - person mcKain; 20.04.2018
comment
Это должен быть выбранный ответ - person nahtnam; 09.08.2019