Mysql Table.column_names在迁移中返回旧值

Mysql Table.column_names在迁移中返回旧值,mysql,ruby-on-rails,ruby,activerecord,Mysql,Ruby On Rails,Ruby,Activerecord,我正在进行一次迁移,重命名列:currency变为legacy\u currency等。问题是,当我尝试获取表的列名时,它会返回旧值 尝试使用reset\u column\u information,但无效。还尝试了以下方法: Model.connection.schema_cache.clear! Model.reset_column_information 似乎不起作用。有什么建议吗 代码摘录: currency_columns = table_class.column_names.gre

我正在进行一次迁移,重命名列:currency变为legacy\u currency等。问题是,当我尝试获取表的列名时,它会返回旧值

尝试使用
reset\u column\u information
,但无效。还尝试了以下方法:

Model.connection.schema_cache.clear!
Model.reset_column_information
似乎不起作用。有什么建议吗

代码摘录:

currency_columns = table_class.column_names.grep(/currency/).map(&:to_sym)
currency_columns.each do |currency_col|
  rename_column table, col, "legacy_#{col}".to_sym
end
...
table_class.column_names #still has the old values

因为我调查了这个问题只出现在其中一个模型上,所以我对它进行了调试,发现我们使用的是(3.3.0)的旧(ish)版本,它对
columns
方法使用缓存,该方法在ActiveRecord中由
column\u names
调用


将gem更新到3.5.0解决了问题。

您重新启动服务器了吗?还有,您的迁移文件是什么样子的?在调用.column_name之前,我粘贴了迁移文件的一个摘录,似乎没有做任何事情,因为它比重命名_column:purchases,:currency,:legacy_currency更复杂。确保检查所有输入(“表”、“列”)。