I have Group model that has_many institutions, and schools.
class Group
has_many :institutions
has_many :schools
end
However I need my Group to have_and_belongs_to_many :users but I want all the users that are associated through the institutions and schools like this:
class Group
has_many :institutions
has_many :users, :through => :instiutions
has_many :schools
has_many :users, :through => :schools
end
class School
belongs_to :group
has_many :educations
has_many :users, :through => :educations
end
class Institution
belongs_to :group
has_many :institutional_educations
has_many :users, :through => :institutional_educations
end
Obviously this isn’t possible so what should I do?
Just offhand, have you considered using single table inheritance, so that school is a type of institution?
Your School class would inherit from Institution (“class School < Institution”). Plus, I guess you’d call it something else but you could have “class GenericInstitution < Institution” as well. Then your Group class could look like this:
You’d probably have to specify a foreign key or two to get this to work for you.
Also, I can’t quite figure see what an :institutional_education is, but if you really need it you could do the same thing there (maybe “class institutional_education < education”, or maybe the other way around.