#ruby-on-rails #database-migration
#ruby-on-rails #база данных-миграция
Вопрос:
У меня есть таблица в приложении Rails, которая (в schema.rb) выглядит как:
create_table "users", :force => true do |t|
t.string "name", :null=>false
t.string "address", :null=>false
end
Я хотел бы написать миграцию rails, чтобы разрешить нули для поля адреса. т. е. после миграции таблица выглядит следующим образом:
create_table "users", :force => true do |t|
t.string "name", :null=>false
t.string "address"
end
Что мне нужно сделать, чтобы удалить ограничение?
Ответ №1:
В Rails 4 для того, чтобы удалить ограничение not-null, вы можете использовать change_column_null
:
change_column_null :users, :address, true
Комментарии:
1. Вы действительно пробовали это? Если вы взглянете на исходный код функции, вы не увидите ничего, кроме:
raise NotImplementedError, "change_column_null is not implemented"
2. я использовал его в postgresql. rails определяет его в адаптере для конкретной базы данных, см. postgres , mysql . можно искать другие в apidock . Итак, придется проверить адаптер базы данных на наличие поддержки, на случай, если кто-нибудь получит
NotImplementedError
3. Голосуем за! Здесь также есть ссылка на руководства по Rails .
4. Это должен быть выбранный ответ
Ответ №2:
Не уверен, что вы можете вызвать t.address
? В любом случае… Я бы использовал change_column
вот так
change_column :users, :address, :string, :null => true
Документы…
http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_column