我很难理解为什么在这种情况下会生成两个重复的 sql 查询:
我有一个帖子has_many :comments
post = Post.where(id: 4).includes(:comments).first
生成这些 sql 语句:
SELECT "posts".* FROM "posts" WHERE "posts"."id" = 4 LIMIT 1
SELECT "comments".* FROM "comments" WHERE "comments"."post_id" IN (4)
现在:
comment = post.comments.first
(没有 sql - 好)
但是:
post = comment.post
生成相同的sql:
SELECT "posts".* FROM "posts" WHERE "posts"."id" = 4 LIMIT 1
似乎对象没有在内部绑定。有没有办法可以手动避免第二个 sql ?