Wie kann ich mit has_many: through and honor: conditions neue Datensätze erstellen?
Nehmen wir an, ich habe einen Kurs, in den sich Studenten über eine Mitgliedschaft einschreiben können (z. B. eine Beziehung von has_and_belongs_to_many zwischen Kursen und Studenten). Einige Mitgliedschaften sind für Schüler gedacht, die nur die Klasse beobachten (nicht für Credits usw.).
class Course < ActiveRecord::Base
has_many :memberships
has_many :students,
:through => :memberships
has_many :observers,
:through => :memberships,
:source => :student,
:conditions => { :memberships => { :observer => true }}
end
Folgendes funktioniert hervorragend:
observers = Course.find(37).observers
Folgendes funktioniert nicht:
new_observer = Course.find(37).observers.build(:name => 'Joe Student')
Ich hätte gedacht, dass man mit der Assoziation neue Datensätze erstellen könnte und das hätte erzeugt:
Ein neuer Schülerrekord ('Joe Student')Ein neuer Mitgliedschaftsdatensatz (course_id = 37, student_id = (joe), observer = true)Aber stattdessen bekomme ich:
ActiveRecord::AssociationTypeMismatch: Membership expected, got Array
Ich bin sicher, ich bin total verwirrt darüber und würde mich über Erkenntnisse freuen! Ich habe auch versucht, dies mit benannten Gültigkeitsbereichen im Mitgliedschaftsmodell zu tun, aber ich kann has_many anscheinend nicht dazu bringen, einen Gültigkeitsbereich in der Zuordnung zu verwenden.
Vielen Dank für jede mögliche Hilfe!