Alle Posts abrufen, in denen der angegebene Benutzer "Ruby on Rails" kommentiert hat.

Ich habe Benutzer, Beiträge und Kommentare. Benutzer kann nur einen Kommentar zu jedem Beitrag posten.

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

Auf Benutzerseite http://host/users/1 zum Beispiel) Ich möchte alle Beiträge anzeigen, die der angegebene Benutzer kommentiert hat. Jeder Beitrag wird dann alle anderen Kommentare haben.

Ich kann so etwas in meinem User-Controller tun:

def show
  @user = User.find(params[:user_id])
  @posts = []
  user.comments.each {|comment| @posts << comment.post}
end

uf diese Weise finde ich den Benutzer, dann alle seine Kommentare, dann den entsprechenden Beitrag zu jedem Kommentar und dann (meiner Ansicht nach) für jeden Beitrag, den ich rendere, post.comments. Ich bin völlig neu in Rails, also kann ich das machen =) Aber ich denke, es ist irgendwie schlecht und es gibt einen besseren Weg, das zu machen. Vielleicht sollte ich Bereiche oder named_scopes verwenden (weiß noch nicht, was das ist, sieht aber so aus) unheimlich)

So kannst du mich hier auf die richtige Richtung hinweisen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage