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ステートメント:(1122)のchallenges.id

c.subtree_idsが配列を返す場合、次のようになります。

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

わかりました: 上記のクエリをトリガーする前に user_id を変更しましたが、後で保存しました...

これが、コードを実行すると間違っていたのに、クロスチェックすると問題がなかった理由です...

レールには何も問題はありませんでしたが、私には問題がありました...申し訳ありませんが、助けてくれてありがとう!

于 2013-01-11T13:18:07.970 に答える