2015-10-29 37 views
0

如何解決我使用<code>comment.user</code>,我用下面的代碼來填充評論評論這個N + 1個查詢2個協會

@comments = Post.find(params[:post_id]).comments.hash_tree(limit_depth: 3) 

現在,Bullet顯示:

N + 1查詢檢測

Comment => [:user]

添加到取景器:現在

,我試過Post.includes(:comments, :user)Post.includes(comments: :user)等這樣的變化,但子彈不斷通知我的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

顯示您的模型和協會 – emaillenin

+0

@emaillenin我現在已經包括它 –

+0

是什麼hash_tree? – emaillenin

回答

0

我認爲你正在尋找包括user在錯誤的地方。什麼子彈說是關係comments - >user是造成這個問題。

你嘗試過:

@comments = Post.find(params[:post_id]). 
    comments.includes(:user).hash_tree(limit_depth: 3) 
+0

我已經試過這個,但只是沒有在我的問題中包括它,它沒有奏效。 –

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) 
+0

沒有工作。警報仍然彈出。 –