Получить все сообщения, где данный пользователь прокомментировал, Ruby on Rails
У меня есть пользователи, посты и комментарии. Пользователь может оставить только один комментарий к каждому сообщению.
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
На странице пользователя (http://host/users/1
например) Я хочу показать все сообщения, где данный пользователь прокомментировал. Каждый пост будет иметь все остальные комментарии.
Я могу сделать что-то вроде этого в моем контроллере пользователя:
def show
@user = User.find(params[:user_id])
@posts = []
user.comments.each {|comment| @posts << comment.post}
end
Таким образом, я найду пользователя, затем все его комментарии, затем соответствующую запись для каждого комментария, а затем (на мой взгляд) для каждого поста, который я буду отображать post.comments. Я полностью новичок в Rails, так что я могу сделать это =) Но я думаю, что это как-то плохо, и есть лучший способ сделать это, может быть, я должен использовать области или named_scopes (пока не знаю, что это такое, но выглядит страшно).
Так можете ли вы указать мне правильное направление здесь?