Model.Resetowanie informacji o kolumnach nie powoduje przeładowania kolumn w migracji rails

Używam Rails 3.2 i mam migrację, która zawiera kod:

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... )

I dostaję unknown attribute: gift_aid podczas uruchamiania migracji. User.column_names pokazuje tę samą listę przed i po wywołaniu do reset_column_information.

Co dziwne, gdy ręcznie upuszczam kolumnę w mysql i ponownie uruchamiam migrację, działa to zgodnie z oczekiwaniami. Zaczynając od pierwszej migracji ponownie z pustą bazą danych i nie działa, więc jest to coś wspólnego z uruchomieniem wszystkich migracji, a nie jednej.

Mam kilka z poprzednich migracji na model użytkownika, oba zawierają reset_column_information i oba działają dobrze.

Naprawdę drapię się po głowie tym jednym-ktoś ma jakieś pomysły

Author: Iain, 2012-02-02

1 answers

Myślę, że to musi być jakiś błąd związany z buforowaniem schematu... to może zadziałać:

User.connection.schema_cache.clear!
User.reset_column_information

(dla Rails 3.2.2)

 78
Author: Seamus Abshere,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-15 20:55:42