【发布时间】:2018-04-14 17:17:54
【问题描述】:
我尝试将一个相当大的项目从 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(下面列出),所以也许那里引入了一些错误。
如果您需要任何其他代码,请告诉我,我不确定哪些部分可能与问题有关。
宝石升级:
rails 5.1.4 -> 5.2awesome_nested_se 3.1.3 -> 3.1.4devise 4.3.0 -> 4.4.3devise-token_authenticatable 1.0.0 -> 1.0.1mysql2 0.3.21 -> 0.5.1state_machines-activemodel 0.5.0 -> 0.5.1- (以及我认为与错误无关的其他一些小改动)
【问题讨论】:
标签: mysql sql ruby-on-rails