1

使用此代码:

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?

请注意,当我从代码中删除“and projectmilestones.user_id”时,它会正确执行。

这让我发疯了几个小时......

4

2 回答 2

2

错误的 SQL 语句:challenge.id in (1122)

如果 c.subtree_ids 返回数组,则:

c.subtree_ids.join(", ")
于 2013-01-11T12:20:45.593 回答
0

我明白了:我在触发上述查询之前更改了 user_id,但后来我保存了它......

这就是为什么,在运行代码时,它是不正确的,但在交叉检查时,它是好的......

rails 没有任何问题,只是我有问题......对不起,感谢您的帮助!

于 2013-01-11T13:18:07.970 回答