Я использую Rails 3.2, и у меня есть миграция, содержащая код:
add_column :users, :gift_aid, :integer, :default => 2
# reset columns
User.reset_column_information
... code here to load legacy data from sqlite3 database ...
# now create a user with the loaded column data
user = User.create( ...other cols...,
:gift_aid => migrated_gift_aid_column_data,
...other cols... )
, и я получаю неизвестный атрибут: gift_aid
при запуске миграция. User.column_names
показывает один и тот же список до и после вызова reset_column_information
.
Как ни странно, когда я вручную отбрасываю столбец в mysql и повторно запускаю миграцию, он работает должным образом. Начиная с первой миграции снова с пустой базой данных, это не работает, поэтому это как-то связано с запуском всех миграций, а не одной.
У меня есть несколько предыдущих миграций модели User, обе включают reset_column_information
, и обе работают нормально.
Я действительно ломаю голову над этим - у кого-нибудь есть идеи