Frage

A Post belongs_to einen Benutzer und ein Benutzer has_many Beiträge.
Ein Beitrag auch belongs_to ein Thema und ein Thema has_many Beiträge.

class User < ActiveRecord::Base
  has_many :posts
end

class Topic < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
   belongs_to :user
   belongs_to :topic
end

Nun, das ist ziemlich einfach ist und sehr einfach einzurichten, aber wenn ich ein Thema angezeigt werden, ich will nicht nur alle die Beiträge zu diesem Thema, sondern auch die user_name und die user_photo des Benutzers, dass Post. Allerdings werden diese Attribute in dem User-Modell gespeichert und nicht an das Thema gebunden. Also, wie würde ich mich über die bis Einstellung?

Vielleicht kann es schon, da das Modell zwei Fremdschlüssel hat Pfosten genannt werden, einen für den Benutzer und eine für das Thema?

Oder vielleicht ist dies eine Art von „one-way“ has_many durch assiociation. Wie die Post wäre das Modell verbinden, und ein Thema würde has_many: Benutzer,: durch =>: Beiträge. Aber umgekehrt ist dies nicht wahr. Wie ein Benutzer nicht has_many. Themen

würde also dies sogar Notwendigkeit has_many sein: obwohl Vereinigung? Ich glaube, ich bin nur ein wenig verwirrt darüber, was die Steuerung aussehen würde Thema für ein Geben sowohl die Post und die Benutzer dieser Post zu nennen.

Edit: Im Ernst, ich danke Ihnen allen, dass wog ich tal Antwort entschieden, weil ich seinen Code für mein Controller verwendet;. aber ich hätte genauso gut gewählt entweder j. 'S oder Tims statt. Vielen Dank auch beide. Das war so verdammt einfach zu implementieren. Ich denke, heute könnte den Beginn meiner Liebesgeschichte mit Schienen markieren.

War es hilfreich?

Lösung

Nun, wenn das, was Sie wollen, ist der Name zum Beispiel des Autors eines Post, Benutzer anzuzeigen, können Sie wie etwas tun (nicht getestet, sollte aber funktionieren):

@posts = topic.posts.all(:include => :user) 

Es sollte eine Anforderung für alle Beiträge generieren und eine für Benutzer und die Beiträge Sammlung sollten die Nutzer haben.

in einer Ansicht (haml hier):

- @posts.each do |post|
  = post.user.name
  = post.body

Andere Tipps

können Sie die user_name und user_photo erhalten, wenn ein Thema und seine Beiträge Anzeigen ...

so etwas wie:

@topic.posts.each do |post|
   user_name = post.user.name
   user_photo = post.user.photo
end

es ist einfach. Sorry, wenn ich verstehe Ihre Frage nicht sehr gut.

Wenn ich Ihre Frage richtig verstanden hat, nein, ein has_many. Assoziativ ist hier nicht erforderlich

Wenn Sie eine Liste aller Benutzer, die in einem Thema geschrieben (Überspringen der Posting-Information) angezeigt werden wollen, dann wäre es hilfreich sein.

Hier finden Sie die Benutzer von Pfosten zu eifrig Last will, obwohl, zu verhindern, dass n + 1 Abfrage.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top