使用此代码:
candidates = Challenge.joins(:projectmilestone).where("challenges.id in (?) and projectmilestones.user_id = ?", c.subtree_ids, assignee.id)
logger.debug "candidates: #{candidates.count}"
我把它放到我的日志中:
SELECT COUNT(*) FROM "challenges" INNER JOIN "projectmilestones" ON "projectmilestones"."id" = "challenges"."projectmilestone_id" WHERE (challenges.id in (1122) and projectmilestones.user_id = 123)
Candidate projectmilestones: 0
当我在数据库中直接运行查询时,结果为1 为什么Activerecord告诉我结果= 0?
请注意,当我删除"和projectmilestones.user_id"从代码中,它表现正确。
这让我疯狂了几个小时......
答案 0 :(得分:2)
错误的SQL语句: challenge.id in(1122)
如果c.subtree_ids返回数组,则:
c.subtree_ids.join(", ")
答案 1 :(得分:0)
我已经知道了:我在触发上述查询之前更改了user_id但之后保存了它...
这就是为什么在运行代码时,它是不正确的,但是当交叉检查时,它没问题......
导轨没有问题,我错了...抱歉,谢谢你的帮助!