这个rails / sql代码......
@new_relationships = User.select('*')
.from("(#{@rels_unordered.to_sql}) AS rels_unordered")
.joins("
INNER JOIN relationships
ON rels_unordered.id = relationships.character_id
ORDER BY relationships.created_at DESC
")
生成一个如下所示的查询:
SELECT COUNT(*) FROM (SELECT .....
为什么要统计记录?我没有要求计数。我只是想在连接后选择所有列:
SELECT * FROM (SELECT .....
修改
好的,看起来这种情况正在发生,因为我对@new_relationships做的第一件事就是
@new_relationships.any?
因为查询是懒惰地执行的,所以.any?正在影响查询!我本以为rails会执行查询,将所有记录都记录到@new_relationships中,然后计算它们。这是一个令人惊讶的功能。那么如何防止.any?影响查询?换句话说,如何让查询按预期运行,然后计算结果呢?
答案 0 :(得分:0)
您可以对关系的dup
进行测试,以便它是一个单独的关系对象,由any?
修改而不是原始关系对象。
@new_relationships.dup.any?