2012-08-04 32 views
3

这里查询有点复杂。三个相关的表格:用户,帖子和评论。用户has_many帖子和评论,帖子属于用户和has_many评论,评论属于用户和帖子。也就是说,我在Rails中试图在我的控制器中查找用户在他所有帖子中收到的所有评论。我试过这个:rails找到帖子的所有评论user_id = user

@comments = Comment.where(:post_id.user => @user.id) 

但这并没有真正解决。这可能是一个简单的解决方案,帮助?

+0

这可以帮助你知道你能不能做:) HTTP ://guides.rubyonrails.org/active_record_querying.html – 2012-08-04 04:49:18

回答

6

你必须join该职位表:

@comments = Comment.joins(:post).where(:posts => { :user_id => @user.id }) 
+0

真棒,谢谢。 – user1152706 2012-08-04 04:47:41

1

你也可以这样做:

@user = User.find(@user.id, :include => :comments) 

<% @user.comments.each do |comment| %> 
    <%= comment.id %> <br/> 
    <%= comment.text %> 
<% end %> 
+0

这看起来好多了。 – 2013-08-20 18:29:22

+0

@scottastic,它不会做问题,但问题。 – Mischa 2014-04-08 11:30:38

+0

这会获得用户提出的评论,而不是用户在他的帖子上收到的所有评论。 – Mischa 2014-04-08 11:31:13

相关问题