Frage

Dies ist wahrscheinlich eine dumme Frage, aber ich kann nicht eine gute Antwort zu finden scheinen. Ich mag den besten Weg, wissen, auf das Modell zurückgreifen, die ein Objekt gehört.

Zum Beispiel:

class User < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :users
end

Also, um die Beiträge des Benutzers, kann ich user.posts verwenden, aber die Post des Benutzers zu erhalten, kann ich das Gegenteil nicht tun: post.user

Wenn ich eine „user“ Methode zum Post-Modell hinzufügen, es funktioniert, aber es scheint nicht der beste Weg zu sein.

class Post < ActiveRecord::Base
  belongs_to :users

  def user
    User.find(self.user_id)
  end
end

Wenn Sie in diesem Blog-Eintrag sehen http: //www.fortytwo .gr / blog / 18/9-Essential-Rails-Tipps als Beispiel können Sie sehen, dass der Autor post.user.username verwendet, die nicht aus der Box funktioniert auch: include = > [: user], die auch nicht, auch mit der „user“ Methode im Post Modell

funktionieren.

Ich weiß, das ist rudimentär, so vielen Dank für Ihre Geduld. Ich will einfach nur den besten Weg, wissen, diese Beziehung zu erreichen.

Mein Hauptziel ist, zu schreiben „findet“ Includes verschachtelt, die zurück an den Benutzer beziehen sich wie folgt:

post = Post.find (: alle,: include => [: user])

Wenn ich das versuche, erhalte ich „Active :: Configuration: Verband namens‚user‘wurde nicht gefunden, vielleicht Sie es falsch geschrieben?“

Vielen Dank.

War es hilfreich?

Lösung

Ich bin ein bisschen neu zu Rails, aber dies sollte automatisch funktionieren ...

Ah - Sie haben die übergeordnete Klasse in Post als belongs_to :users genannt; sondern weil es nur zu einem einzigen Benutzer gehört, Rails erwartet belongs_to :user (oder, natürlich, belongs_to :users, :class_name => "User").

Das heißt:

class Post < ActiveRecord::Base
  belongs_to :user
end

sollte die Arbeit machen.

Andere Tipps

Gehört zu einem Modell im Singular sein sollte. wie

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