Recupere todas las publicaciones donde el usuario dado ha comentado, Ruby on Rails
Tengo usuarios, publicaciones y comentarios. El usuario puede publicar solo un comentario en cada publicación.
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
En la página del usuario (http://host/users/1
por ejemplo) Quiero mostrar todas las publicaciones donde el usuario dado ha comentado. Cada publicación tendrá todos los demás comentarios.
Puedo hacer algo como esto en mi controlador de usuario:
def show
@user = User.find(params[:user_id])
@posts = []
user.comments.each {|comment| @posts << comment.post}
end
De esta manera, encontraré al Usuario, luego todos sus comentarios, luego la publicación correspondiente a cada comentario, y luego (en mi opinión) para cada publicación rendiré post.comments. Soy totalmente nuevo en Rails, así que puedo hacer esto =) Pero creo que de alguna manera es malo y hay una mejor manera de hacerlo, tal vez debería usar ámbitos o named_scopes (aún no sé qué es esto, pero parece de miedo).
Entonces, ¿puedes señalarme la dirección correcta aquí?