gpt4 book ai didi

ruby-on-rails - 如何使用 ActiveRecord 3.1 在不停机的情况下删除列?

转载 作者:数据小太阳 更新时间:2023-10-29 07:00:17 24 4
gpt4 key购买 nike

在使用 ActiveRecord 运行应用程序时从表中删除列会导致错误,因为 ActiveRecord 会缓存列名。

其他版本的 ActiveRecord 的解决方法是覆盖模型中的#columns 方法并在迁移前过滤掉不推荐使用的列名称(基本上 - 对 AR 隐藏这些列)。这是有效的,因为所有与列名相关的方法都基于#columns 调用

在 ActiveRecord 3.1 中,表结构的缓存被移至 ConnectionPool,并且所有与列名相关的值(例如 coluumns_hash)都被独立缓存(3.2 使用 ModelSchema.columns 使其再次工作)

在 ActiveRecord 3.1 中是否有任何方法(除了具体适配器的深度破解)来实现安全的列删除?

最佳答案

TST Media 的 Luke Ludwig 提供了一个解决方案 here .本质上,它们“覆盖了正在删除其列的类的 ActiveRecord::Base.columns 方法。”

(解决方案适用于除 3.1 之外的所有内容)

关于ruby-on-rails - 如何使用 ActiveRecord 3.1 在不停机的情况下删除列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12518192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com