Ich habe folgendes ModellActive Record enthält mit STI
class Event < ActiveRecord::Base
has_many :attendances
class Attendance < ActiveRecord::Base
belongs_to :user
class Student < User
has_one :student_detail
class StudentDetail < ActiveRecord::Base
belongs_to :school
class Staff < User
has_one :staff_detail
class StaffDetail < ActiveRecord::Base
Die StudentDetail und StaffDetails haben weitere Informationen, die ich versuche, sie alle in einer STI Benutzertabelle zu vermeiden, dass aufgrund ähnlicher, mit etwas Arbeit, die zu konkrete Klasse pro Tabelle Muster
kann ich diese leicht genug tun
Event.includes(:attendances => :user).where(...)
aber ich will ein sein Es ist möglich, je nach Benutzertyp z.
Event.includes(attendances: {:user => :student_details })
Dies wird fehlschlagen, da einige der Benutzer Staff-Objekte sind.
Ich weiß, Schienen wird dies nicht aus der Box unterstützen, aber jemand irgendwelche Tricks zu bekommen diese
zu arbeitenbeste Lösung jetzt auf die Teilnahme an Schüler aufgeteilt Benutzer und Mitarbeiter dh
würdeclass Attendance < ActiveRecord::Base
belongs_to :student, -> {includes(:staff_detail) }
belongs_to :staff, -> {includes(:student_detail) }
#belong_to :user
was nicht ideal ist. Hat jemand irgendwelche Tipps? Weg, dies zu lösen.
Die Syntax wieder geändert, für Rails 4.1 Ich glaube. Die neue Syntax lautet 'ActiveRecord :: Associations :: Preloader.new.preload (records, associations)'.Weitere Informationen finden Sie unter [commit] (https://github.com/rails/rails/commit/6e5a2cb9519aab568ea0cfea2f42364de8ccf655). – Leito