Это хороший вопрос. Во-первых, если вам нужно, чтобы у всех ваших пользователей было значение статуса, вам лучше указать значение по умолчанию для новых пользователей, чтобы убедиться, что оно не равно нулю.
Это можно добавить в качестве параметра в миграцию, которая добавляет столбец, или позже в другой миграции, как таковое:
def up
change_column :users, :status, :string, default: 'active'
end
def down
change_column :users, :status, :string, default: nil
end
Или с однострочником:
change_column_default :users, :status, from: nil, to: 'active'
Чтобы обновить существующие записи, рекомендуется также сделать это посредством миграции, чтобы все версии базы данных обновлялись автоматически (в отличие от запуска некоторого кода вручную для каждой из них).
Правильный способ сделать это - создать новую одностороннюю миграцию, в которой вы напишете код обновления:
$ rails g migration update_status_of_existing_users
def up
User.update_all({ :status => 'active'})
end
def down
end
Миграция должна быть односторонней, чтобы избежать потери данных, если вы решите откатить значения этого параметра миграции по умолчанию.
В зависимости от вашего проекта вы можете объединить обе миграции в одну.