gpt4 book ai didi

ruby-on-rails - 将 rails 4.1 升级到 4.2 列名称问题

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:59 26 4
gpt4 key购买 nike

我正在运行几年前相当大的 Rails 4.1 应用程序,其中一个中心模型有一个名为 model_name 的列。

在尝试将应用程序升级到 rails 4.2 失败后,我们发现,该列名称实际上是一个 rails 保留字。这之前没有引起我们的注意,因为使用该名称的 rails 方法是一种私有(private)方法。现在,从 rails 4.2 开始,这是公开的,并且 rails 提示命名困惑。

我真的真的真的不想重命名该列,因为它在我们的应用程序中随处引用,甚至在大量序列化数据、历史 URL 等中也是如此。

除了重命名列之外,对替代升级过程有何建议?

最佳答案

至少你必须在你的数据库和模型中重命名model_name。在 URL 的序列化数据等中,您可以保持原样。您“只”必须使用模型的新访问器。从长远来看,我建议不要在您的模型类中重新定义此方法。您无法预测哪个第 3 方 gem 或 Rails 内部函数依赖于 model_name 的行为。

在短期内,您可以尝试在数据库中重命名该列并使用:

def model_name
read_attribute(:new_column_name)
end

def model_name=(new_modelname)
read_write_attribute(:new_column_name, new_modelname)
end

关于ruby-on-rails - 将 rails 4.1 升级到 4.2 列名称问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39573523/

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