Recuperar todas as postagens onde o usuário comentou, Ruby on Rails
Eu tenho usuários, postagens e comentários. O usuário pode postar apenas um comentário para cada postagem.
class User < ActiveRecord::Base
has_many :posts
has_many :comments
end
class Post < ActiveRecord::Base
has_many :comments
belongs_to :user
end
class Comment < ActiveRecord::Base
belongs_to :user
belongs_to :post
end
Na página do usuário (http://host/users/1
por exemplo) quero mostrar todas as postagens em que o usuário especificado comentou. Cada postagem terá todos os outros comentários.
Eu posso fazer algo assim no meu controlador de usuário:
def show
@user = User.find(params[:user_id])
@posts = []
user.comments.each {|comment| @posts << comment.post}
end
Dessa forma, encontrarei o Usuário, todos os seus comentários, a postagem correspondente a cada comentário e, em minha opinião, para cada publicação, apresentarei post.comments. Sou totalmente novo no Rails, então posso fazer isso =) Mas acho que de alguma forma é ruim e há uma maneira melhor de fazer isso, talvez eu deva usar escopos ou named_scopes (ainda não sei o que é isso, mas parece assustador).
Então você pode me indicar a direção certa aqui?