Schienen: das Objekt Bezug gehört wieder zu modellieren zu
-
19-09-2019 - |
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.
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