So haben viele-zu-viele-Beziehung in rails
Ich bin neu auf Schienen, und die versuche zum einrichten einer viele-zu-viele-Beziehung in meinem rails Projekt. Ich habe eine kleine Strategie, aber ich bin nicht sicher, ob es der richtige Weg.
Ziel:
Ich habe eine Tabelle users und eine Tabelle der Gruppen. Benutzer können einen Teil der vielen Gruppen, und jede Gruppe kann viele Benutzer haben.
Strategie:
- Set up Benutzer-migration zu haben name:string
- Set up Gruppe migration name:string
- Eingerichtet, ein Tisch migration
- Einrichten-User-Modell, so dass es hätte has_and_belongs_to_many :Gruppen
- Set up Gruppe Modell so, dass es hätte has_and_belongs_to_many :users
Wäre dies die richtige Strategie? Danke!
Railcast Zusammenfassung Antwort:
Für diejenigen, die interessiert sind - Railcast schlägt vor, Sie verwenden eine has_many :through association, da die Strategie von oben hat die Einschränkung, dass Sie nicht hinzufügen zusätzliche relation-specific information.
check out: http://kconrails.com/tag/has_many/
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, ich nehme an, Sie haben einen Benutzer-Modell mit einem Feld "name" und einer Gruppe-Modell mit einem Feld "name".
Benötigen Sie eine Modell zwischen Benutzern und Gruppen. Nennen wir es mal-Gruppierung:
In der Gruppierung-Modell (Gruppierung.rb), setzen Sie:
In der Benutzer-Modell:
Und in der Gruppe-Modell:
In der _form-Datei zu Bearbeiten oder zu aktualisieren Ihr Profil, Sie stellen:
Und schließlich die User-Klasse muss wissen, was mit den Informationen aus dem Formular. Insert into Benutzer.rb:
assign_groups werden Leerzeichen entfernt und downcases alle Worte, so dass Sie nicht redundante tags.
Nun können Sie zeigen, dass die Gruppen für einen Benutzer in der show-Datei sein oder Ihr Profil:
Hoffe, dass das hilft.
has_and_belongs_to_many
relation? Es würde vereinfachen Sie den gesamten Prozess, wenn keine weiteren Felder in die Zwischentabelle.Die gute Nachricht ist,, dass diese ist bereits gut dokumentiert.
Ruby on Rails Guide
Railscast tutorial