我正在使用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
,并且都正常工作。
我真的很困惑 - 有人有任何想法吗?
User.reset_column_information
两次,而导致失败的是第二次调用。我通过重新组织我的迁移,只调用了一次reset_column_information
来解决了这个问题(因为我还没有最终部署网站,所以可以回退没有问题)。这个解决方案看起来也是可行的。如果有机会,我会进行测试。 - Iainreset_column_information
生效。清除模式缓存使其正常工作!谢谢 :) - Iain