mysql - Table.column_names 在迁移中返回旧值

标签 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

最佳答案

由于我调查发现该问题仅出现在其中一个型号上,因此我对其进行了调试,发现我们使用的是旧版本的 acts-as-taggable-on (3.3.0),它对 columns 方法使用缓存,该方法由 ActiveRecord 中的 column_names 调用。

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

关于mysql - Table.column_names 在迁移中返回旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32316096/

相关文章:

sql - MySQL 关键问题

ruby - HAML for 循环在 HTML 渲染中打印单词 "true"

jquery - 添加 Jquery 脚本标签

ruby-on-rails - 在生产环境中使用 html5-rails gem 时出现 AssetNotPrecompiledError

ruby-on-rails - 如何使一个页面可以被两个 url 访问以用于 seo 目的?

ruby-on-rails - Rails Engine 未加载到 Assets 预编译中

ruby-on-rails - 如何在 ruby​​/rails 中编辑 .xlsm 文件而不丢失 VBA 宏?

C# - 意外的身份验证方法 mysql_native_password 异常

mysql - 在光滑的操作中使用 scala 集合等价物是否有害?

mysql - 未订购的客户