Table.column_names在迁移中返回旧值

时间:2015-08-31 16:48:12

标签: mysql ruby-on-rails ruby activerecord

我正在进行迁移,我重命名列:货币变为legacy_currency等。问题是,当我尝试获取表的列名时,它会返回旧值。

尝试使用reset_column_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

1 个答案:

答案 0 :(得分:0)

由于我已经调查过这个问题只出现在其中一个模型上,我调试了它,发现我们使用的是acts-as-taggable-on(3.3.0)的旧(ish)版本,它使用的是columns方法的缓存,由ActiveRecord中的column_names调用。

将gem更新为3.5.0解决了这个问题。