Ruby on rails Model.reset_column_信息不会在rails迁移中重新加载列

Ruby on rails Model.reset_column_信息不会在rails迁移中重新加载列,ruby-on-rails,activerecord,migration,rake,ruby-on-rails-3.2,Ruby On Rails,Activerecord,Migration,Rake,Ruby On Rails 3.2,我使用的是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 = Us

我使用的是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\u aid
User.column\u names
显示调用
reset\u column\u information
前后的相同列表

奇怪的是,当我在mysql中手动删除该列并重新运行迁移时,它会按预期工作。从第一次迁移开始,再次使用一个空数据库,但它不起作用,因此这与运行所有迁移有关,而不是单个迁移

我以前在用户模型上做过几次迁移,都包括
reset\u column\u information
,而且都可以正常工作


我真的抓狂了-有人有什么想法吗

我想这一定是与模式缓存相关的某种错误。。。这可能会奏效:

User.connection.schema_cache.clear!
User.reset_column_information

(对于Rails 3.2.2)

这在Rails 6上不需要(在6.0.0beta3上测试)


我用
更新尝试了这两种方法!(新专栏:…)
全部更新(新专栏:…)

我想你可能是对的。实际上,在两次不同的迁移中,我有两次调用
User.reset\u column\u information
,第二次失败。我通过重新组织我的迁移来修复它,因此我只调用了一次
重置列信息
(因为我还没有最终部署站点,所以返回也没有问题)。这个解决方案看起来也能奏效。如果我有机会,我会测试它。我可以确认它做得很好。看起来,对于长时间迁移和对模型的多次更改,只有第一个
reset\u column\u信息
起作用。清除模式缓存可以让它正常工作!谢谢:)非常感谢!这让我很恼火,因为Rails文档显然写了一些不同的东西->Rails 2有选项吗?我在Rails 3.2.22中看到了同样的问题,并通过这个解决方案解决了,谢谢!有人知道Rails5的情况吗?这个问题在Rails6上对我来说仍然存在。是的,它似乎仍然存在。作为最初的海报(所有这些年前),我只是在一个使用Rails 6的新项目中偶然发现了它。尽管如此,这项工作似乎仍在发挥作用,这是一个很好的结果。