rails activerecord有什么问题?

时间:2013-01-11 12:12:56

标签: ruby-on-rails rails-activerecord

使用此代码:

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"从代码中,它表现正确。

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

2 个答案:

答案 0 :(得分:2)

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

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

c.subtree_ids.join(", ")

答案 1 :(得分:0)

我已经知道了:我在触发上述查询之前更改了user_id但之后保存了它...

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

导轨没有问题,我错了...抱歉,谢谢你的帮助!