Rails belongs_to viele Modelle [geschlossen]
-
29-09-2019 - |
Frage
habe ich ein paar Fragen auf SO über Rails Verbände finden, die ein wenig wie meine Frage, aber für das Leben von mir kann ich scheinen nicht zu verstehen, wie belongs_to
mehrere Modelle verwenden.
Hier ist die Tabellenstruktur Ich beabsichtige zu haben:
User
id
Post
id
user_id #foreign key; a post belongs to a User aka "Who created this post"
Comment
id
user_id #foreign key; a comment belongs to a User aka "Who made this comment"
post_id #foreign key; a comment belongs to a Post aka "What post this comment is for"
und Verbände :
User
has_many :posts
has_many :comments
Post
belongs_to :user
has_many :comments
Comment
belongs_to :user
belongs_to :post
Ist das der richtige Ansatz?
Lösung
Ja, das ist der richtige Ansatz.
Andere Tipps
Während nicht immer die „beste“ -Ansatz, Rails bietet, was ein Polymorphe belongs_to Verein genannt . Es verhindert, dass Sie einen Fremdschlüssel in der Datenbank definiert, weil die xxx_id Spalte eine ID in eine von vielen möglichen Tabellen verweist, während eine andere Spalte den Namen der Tabelle Modell bezeichnet, aber es macht die Beziehung deutlicher in Rails. Außerdem schränkt es das Modell nur, gehören in eine der anderen Modelle, wie dem zu gehören, im Gegensatz oder mehr, wie es mit der Einrichtung mehrerer Fremdschlüssel ohne einige zusätzliche db Magie passieren würde.