ho il seguente modelloattivo record include con 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
Lo StudentDetail e StaffDetails hanno ulteriori informazioni, sto cercando di evitare di avere tutto in una sola tabella utente STI a causa di dover lavorare con qualcosa di simile a classe concreta per modello tavolo
posso farlo abbastanza facilmente
Event.includes(:attendances => :user).where(...)
ma voglio essere un da includere a seconda del tipo di utente ad es.
Event.includes(attendances: {:user => :student_details })
Ciò non riuscirà poiché alcuni utenti sono oggetti Staff.
mi rendo conto rotaie non sostenere questo, fuori dalla scatola, ma chiunque avere trucchi per ottenere questo al lavoro
soluzione migliore in questo momento sarebbe stato diviso utente sulla frequenza a studenti e del personale cioè
class Attendance < ActiveRecord::Base
belongs_to :student, -> {includes(:staff_detail) }
belongs_to :staff, -> {includes(:student_detail) }
#belong_to :user
che non è l'ideale. Qualcuno ha qualche consiglio? modo per risolvere questo.
La sintassi cambiato di nuovo, per Rails 4.1 I credere. La nuova sintassi è 'ActiveRecord :: Associations :: Preloader.new.preload (records, associations)'.Vedi [commit] (https://github.com/rails/rails/commit/6e5a2cb9519aab568ea0cfea2f42364de8ccf655) per i dettagli. – Leito