我正在使用较旧的 (rails 4) 代码库,我的任务是更新 mysql2 gem 以支持最新的数据库版本。使用我们当前版本的 gem 和代码,一切正常,但在升级时我遇到了与保留字“groups”的命名冲突。
除了一个查询之外,我已经设法在所有查询中使用反引号将其转义。我们调用
<modelname>.send(name, args)
,当 name
是 :groups
时,我们得到一个错误。发送返回一个活动记录关系。 relation.to_sql 告诉我它都被转义了,但一方面,最后的 groups
似乎被添加到 select * 的末尾,来自 selects 的联合:
SELECT `groups`.*
FROM
(
(SELECT `groups`.*
FROM `groups`
WHERE ...)
UNION ALL
(SELECT `groups`.*
FROM `groups`
WHERE ...)
) groups
我一直在试图找到一种方法来逃避最后一组参考。我能想到的唯一方法就是将其转换为 Arel sql 并以这种方式运行查询。 有没有我可以传递给 ActiveReccord 关系的某种“名称”,所以它给了我一个转义的
groups
?
非常感谢您的帮助!
我寻求开箱即用的解决方案: