更新された回答:
投稿の著者のコメントを取得するメソッドは次のとおりです。
class Post < ActiveRecord::Base
belongs_to :user # So, there's a user_id attribute
has_many :comments
def authors_comments
comments.where("user_id = ?", user_id)
end
end
それはあなたができるはずです:
@user.posts.each { |post| puts post, post.authors_comments }
ただし、他の方法ほど効率的ではありません。n 個の投稿は、コメントを取得するためのn 個の SQL クエリになります。しかし、それは以下のコメントで説明されているものにかなり近い.
元の回答(後世向け)
それは最もきれいではありませんが、次のようなことができます
class User < ActiveRecord::Base
has_many :posts # All the user's posts
has_many :comments # All the user's comments on all posts
# All comments made on any of user's posts
has_many :replies, :through => :posts, :source => :comments
def replies_to_self
replies.where("comments.user_id = ?", id)
end
end
@user.replies_to_self
自分の投稿に対するユーザーのコメントを取得するために呼び出します
次のような SQL になります。
SELECT
"comments".*
FROM
"comments"
INNER JOIN
"posts"
ON
"comments"."post_id" = "posts"."id"
WHERE
"posts"."user_id" = X AND "comments"."user_id" = X
(X
ユーザーのIDはどこにありますか)