join-Modell Attribute in rails has_many :through
als Beispiel habe ich ein Modell von Gruppe und Modell-Nutzer
dem Sie verbunden sind mit :has_many, :through => groups_users
groups_users-Tabelle ein Attribut, genannt moderator, der angibt, ob ein Benutzer ist ein moderator der Gruppe
Frage: wie erhalte ich Zugriff auf alle Moderatoren zu einer bestimmten Gruppe?
nach der Lektüre über :with_scope, was in den Sinn kommt ist
def find_moderators
Group.with_scope(:find=>{:conditions => "moderator=1"})
@moderators=@group.users
end
end
Jedoch nach Schienen 2, with_scope wird geschützt, und erlaubt nicht angegebenen code in den controller, also, Was ist die gute alternative?
InformationsquelleAutor Pavel K. | 2009-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
gelöst mit
Bevorzugt Matt van Horn ' s Antwort, denn diese erzeugt man nur eine Abfrage, wenn wir wählen Sie Benutzer-info mit @group.Moderatoren, während seine Lösung gibt separate Abfrage für jeden moderator
edit: aktualisiert, um die Antwort Sizzlepants' Frage. Moderatoren erstellt mit diesem code sollte moderator Attribut join-Modell auf true gesetzt (Schienen verwendet :Bedingungen, während die Schaffung von join-Modell), auch, wenn ich code es jetzt ist, würde ich den Namen groups_users Mitgliedschaften für die Lesbarkeit.
Mit dieser Art von Verein, wie würden Sie neue Benutzer mit der
moderator
Attribut standardmäßig auf true gesetzt? Ich würde erwarten, dass so etwas wieGroup.first.moderators << User.first
aber in meinen Tests diese Ergebnisse in diemoderator
- Attribut wird festgelegtnil
.Ich bin mir nicht sicher, ob dies die beste Methode, aber ich ging mit diesem, sowieso.
spät (sehr spät) aktualisieren, um die Antwort zu Antwort zu Frage SizzlePants
InformationsquelleAutor Pavel K.
InformationsquelleAutor Matt Van Horn
Monkeypatch!
InformationsquelleAutor mcandre