Подтвердить что ты не робот

Model.reset_column_information не перезагружает столбцы в миграции рельсов

Я использую 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... )

и я получаю unknown attribute: gift_aid при выполнении миграции. User.column_names показывает тот же список до и после вызова reset_column_information.

Как ни странно, когда я вручную удаляю столбец в mysql и перезапускаю его, он работает так, как ожидалось. Начиная с первой миграции снова с пустой базы данных, и это не работает, поэтому это связано с запуском всех миграций, а не с одним.

У меня есть пара предыдущих миграций на модели пользователя, включая reset_column_information, и обе работают нормально.

Я действительно почесываю голову над этим - у кого есть какие-то идеи.

4b9b3361

Ответ 1

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

User.connection.schema_cache.clear!
User.reset_column_information

(для Rails 3.2.2)