Hi,

I am working a project where subclasses (using STI) of an model have 
different relationships. Quick Example:

class Course < ActiveRecord::Base
  has_many :learning_units, as: :container
end

class LearningUnit <ActiveRecord::Base
end

class LessonGroup < LearningUnit
  belongs_to :container, polymorphic: true
  has_many :lessons,
            -> { where(container_type: LessonGroup.name) },
            class_name: "Lesson",
            foreign_key: "container_id"
end

class Lesson < LearningUnit
  belongs_to :container, polymorphic: true
  # notice no lessons relationship
end


Everything works as expected except that when I try to do 

course_instance.learning_units.includes(:lessons)


an exception is raised because one of the subclasses does not have a 
`lessons` relationship.

This is where it happens: 
https://github.com/rails/rails/blob/4-1-stable/activerecord/lib/active_record/associations/preloader.rb#L147

Unless I am mistaken, there's no configuration to change this behaviour. A 
possible fix would be to raise the exception only if none of the classes 
define the requested associations. Is there any chance such a change gets 
merged?

Any thoughts are more than welcome.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to