Ryan-Neal Mes
Ryan-Neal Mes

Reputation: 6263

Active Record has_many through more than one model

Is it possible to access objects more than one model away?

For example let's say I have

class Contact <ActiveRecord:Base
 has_many :interactions
end

class Interaction <ActiveRecord:Base
 belongs_to :contact
 belongs_to :course_presentation 
end

class CoursePresentation <ActiveRecord:Base 
 has_many: interactions
 belongs_to :course
end

class Course <ActiveRecord:Base
 has_many :course_presentations
end

Right now I know I could write a through relationship via contacts to course presentations and then get all the course related to all the course presentations or I could do

contact.interactions.map{ |i| i.course_presentation.course }

I would like to be able to pull courses related to a contact directly so ... e.g.

contact.courses

Is this possible?

Upvotes: 0

Views: 109

Answers (1)

Sherwyn Goh
Sherwyn Goh

Reputation: 1352

Yes, I believe so. Just add the following:

class Contact < ActiveRecord::Base
  has_many :interactions
  has_many :course_presentations, through: :interactions
  has_many :courses, through: :course_presentations
end

Upvotes: 1

Related Questions