我正在进行迁移,我重命名列:货币变为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
答案 0 :(得分:0)
由于我已经调查过这个问题只出现在其中一个模型上,我调试了它,发现我们使用的是acts-as-taggable-on(3.3.0)的旧(ish)版本,它使用的是columns
方法的缓存,由ActiveRecord中的column_names
调用。
将gem更新为3.5.0解决了这个问题。