Rails 4 (інші відповіді на Rails 4 мають проблеми):
def change
change_column_null(:users, :admin, false, <put a default value here> )
# change_column(:users, :admin, :string, :default => "")
end
Зміна стовпця зі значеннями NULL, щоб не допустити NULL, спричинить проблеми. Це саме той тип коду, який буде добре працювати в налаштуваннях вашої розробки, а потім виходить з ладу при спробі розгорнути його у виробництво LIVE . Спочатку слід змінити значення NULL на щось дійсне, а потім заборонити NULL. Четверте значення у change_column_null
робить саме це. Детальнішу інформацію див. У документації .
Крім того, я, як правило, віддаю перевагу встановити значення поля за замовчуванням для поля, тому мені не потрібно вказувати значення поля кожного разу, коли я створюю новий об'єкт. Я включив коментований код, щоб зробити це також.
MyModel.update_all({:date_column => Time.now}, {:date_column => nil})
. Запит у вашій оригінальній формі щойно зробив усі мої моделі нульовими значеннями в полі.