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?