我正在使用comment.user
,我正在使用以下代码填充评论:
@comments = Post.find(params[:post_id]).comments.hash_tree(limit_depth: 3)
现在,Bullet显示:
N + 1
检测到查询
Comment => [:user]
添加到查找程序:
:includes => [:user]
现在,我尝试了Post.includes(:comments, :user)
,Post.includes(comments: :user)
和其他此类变体,但是Bullet会告诉我N + 1查询仍然存在。
模特和协会:
class User < ActiveRecord::Base
has_many :posts
has_many :comments
end
class Post < ActiveRecord::Base
belongs_to :user
has_many :comments, dependent: :destroy
end
class Comment < ActiveRecord::Base
belongs_to :user
belongs_to :post
end
解决方案是什么?
答案 0 :(得分:0)
我认为您希望将user
包含在错误的位置。子弹说的是关系comments
- &gt; user
导致问题。
你试过了吗?
@comments = Post.find(params[:post_id]).
comments.includes(:user).hash_tree(limit_depth: 3)
答案 1 :(得分:0)
@comments = Comment.where(post_id: params[:post_id]).hash_tree(limit_depth: 3)
如果需要用户信息
@comments = Comment.where(post_id: params[:post_id]).joins(:user).select("*, users.nickname as user_nickname").hash_tree(limit_depth: 3)