ruby-on-rails – Rails重复sql查询,即使是包含
发布时间:2020-12-17 02:20:47 所属栏目:百科 来源:网络整理
导读:我无法理解为什么在这种情况下生成两个重复的SQL查询: 我有一个帖子has_many:评论 post = Post.where(id: 4).includes(:comments).first 生成这些sql语句: SELECT "posts".* FROM "posts" WHERE "posts"."id" = 4 LIMIT 1SELECT "comments".* FROM "comme
我无法理解为什么在这种情况下生成两个重复的SQL查询:
我有一个帖子has_many:评论 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? 解决方法
使用inverse_of指定双向关系.从
the docs开始:
对于简单的情况,它可能看起来多余,但是关联是单向定义.指定inverse_of让Rails知道这两个关系是彼此相反的,并解决了你所拥有的问题. # in post.rb has_many :comments,:inverse_of => :post # in comment.rb belongs_to :post,:inverse_of => :comments (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |