Wie kann ich neue Datensätze mit has_many: through und honor: conditions erstellen?

8

Nehmen wir an, ich habe einen Kurs, in dem sich Studenten über eine Mitgliedschaft anmelden können (z. B. eine has_and_belongs_to_many-Beziehung zu Kursen und Studenten). Einige Mitgliedschaften sind für Studenten, die nur die Klasse beobachten (nicht für Kredit usw.), also:

%Vor%

Folgendes funktioniert großartig:

%Vor%

Folgendes funktioniert nicht:

%Vor%

Ich hätte gedacht, dass man neue Datensätze mit der Assoziation erstellen könnte und das hätte generiert:

  1. Eine neue Schülerakte ('Joe Student')
  2. Ein neuer Mitgliedschaftsdatensatz (course_id = 37, student_id = (joe), observer = true)

Aber stattdessen bekomme ich:

%Vor%

Ich bin mir sicher, dass ich total verwirrt darüber bin, wie das geht und würde mich über Einsichten freuen! Ich habe auch versucht, dies mit benannten Bereichen im Membership-Modell zu tun, aber ich kann nicht scheinen, has_many zu bekommen, um einen Bereich in der Assoziation zu verwenden.

Vielen Dank für jede mögliche Hilfe!

    
Eric 03.10.2009, 21:13
quelle

1 Antwort

6

Ich glaube, dass Sie auf einen Rails-Fehler gestoßen sind. Ich habe das gleiche auf meiner Box (2.3.4) versucht und es gibt mir den gleichen Fehler, der überhaupt nicht richtig erscheint. Zusätzlich probierte ich auch die Arbeit von:

%Vor%

Aber dies erzeugt eine Mitgliedschaft mit dem Beobachterfeld, das auf falsch eingestellt ist!

Die letzte hässliche Problemumgehung, die ich gefunden habe, war, den Datensatz Membership manuell zu erstellen:

%Vor%

Ich habe ein Ticket für erstellt dies und ich werde weiter nach dem Frühstück untersuchen.

BEARBEITEN : Ich habe, wie versprochen, weiter untersucht und gefunden, wenn du deinen :conditions Hash in ein Array wie:

änderst %Vor%

Es funktioniert wie beabsichtigt. Ich habe auch ein github-Repository mit Beispielcode und Anweisungen zum Duplizieren.

    
Ryan Bigg 03.10.2009 22:49
quelle