gpt4 book ai didi

mysql - 升级到 Rails 5.2 后 from 子句中缺少表名

转载 作者:行者123 更新时间:2023-11-29 10:17:59 25 4
gpt4 key购买 nike

我尝试将一个相当大的项目从 Rails 5.1.4 升级到 Rails 5.2(还将 mysql2 从 0.3.10 升级到 0.5.1),但在使用联接时遇到了问题。考虑以下模型:

class TermsVersionApproval < ApplicationRecord
belongs_to :terms_version
end

class TermsVersion < ApplicationRecord
end

当我进行连接时,它会通过在 FROM 语句后省略表名称并生成 FROM INNER JOIN 来生成无效的 sql:

TermsVersionApproval.joins(:terms_version).to_sql
=> SELECT `terms_version_approvals`.* FROM INNER JOIN `terms_versions` ON `terms_versions`.`id` = `terms_version_approvals`.`terms_version_id`

我尝试用新的 Rails 5.2 项目重现它,但一切正常。该项目相当大,所以我假设有一些深层代码与 Rails 5.2 或新 mysql2 版本中的一些新代码发生冲突。不幸的是,到目前为止我还没有找到这个错误。

知道如何调试这个吗?或者过去有人遇到过类似的问题吗?我还必须升级一些其他 gem (下面列出),所以可能会引入一些错误。

如果您需要任何其他代码,请告诉我,我不确定哪些部分可能与该问题相关。

gem 升级:

  • rails 5.1.4 -> 5.2
  • awesome_nested_se 3.1.3 -> 3.1.4
  • 设计 4.3.0 -> 4.4.3
  • devise-token_authenticatable 1.0.0 -> 1.0.1
  • mysql2 0.3.21 -> 0.5.1
  • state_machines-activemodel 0.5.0 -> 0.5.1
  • (以及我认为与该错误无关的其他一些细微更改)

最佳答案

此问题可能会向您揭示一些信息:

https://github.com/activerecord-hackery/polyamorous/issues/34

读完后,我会在您的项目中查找对 make_constraints 的引用,因为 5.2 中似乎发生了一些变化,这会导致类似的错误。

或者,如果您在 Gemfile.lock 中看到多角 gem ,问题已解决,只需更新 gem ,因为他们在一月份修复了它。

关于mysql - 升级到 Rails 5.2 后 from 子句中缺少表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49834130/

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