2010-11-26 7 views
1

Das sollte eine einfache Frage sein, aber ich kann keine gute Lösung online finden.Schreiben Join Tabelle Daten - has_many: durch

Ich habe drei Tabellen/Modelle. Benutzer, Allianz und Allianz_Mitgliedschaft. Letzteres ist eine Join-Tabelle, die Folgendes beschreibt: Alliance has_many: Benutzer über: Alliance_Membership-Beziehung.

Alles funktioniert gut, aber Alliance_Membership hat jetzt ein zusätzliches Feld namens 'rank'. Die Frage ist, wie stelle ich das beim Erstellen meines neuen Objekts ein? Derzeit, ich tue so etwas wie:

@alliance.users << current_user 

Das ist wirklich praktisch, da es automatisch meine Alliance_Membership Tabelle auffüllt. Aber wie kann ich auch das Feld Alliance_Membership.rank einstellen?

+0

Hat ein Benutzer mehrere Allianzen? –

+0

Nein, ein Benutzer hat eine Allianz, eine Allianz hat viele Benutzer über die Mitgliedschaftstabelle. – Spyros

Antwort

4

Sie müssen die Mitgliedschaft selbst erstellen, um das Attribut 'Rang' festzulegen. So etwas wie dieses:

@alliance.alliance_memberships.create!(
    :user => current_user, 
    :rank => 'whatever') 
+0

Funktioniert großartig thanx :) Kleine Korrektur für Leute, die es betrachten, sollte es alliance_membership sein, aber die Technik ist die gleiche. Danke Jeremy :) – Spyros

Verwandte Themen