在使用 ActiveRecord 运行应用程序时从表中删除列会导致错误,因为 ActiveRecord 会缓存列名。
其他版本的 ActiveRecord 的解决方法是覆盖模型中的 #columns 方法并在迁移之前过滤掉不推荐使用的列名(基本上 - 从 AR 中隐藏这些列)。这很有效,因为所有与列名相关的方法都基于 #columns 调用
在 ActiveRecord 3.1 中,表结构的缓存被移动到 ConnectionPool,并且所有与列名相关的值(例如 coluumns_hash)都被独立缓存(3.2 使用 ModelSchema.columns 使其再次工作)
有没有什么方法(除了混凝土适配器的深度破解)来实现 ActiveRecord 3.1 中的安全列下降?