Прямая ассоциация для группы с пользователем - PullRequest
2 голосов
/ 01 марта 2012

У меня есть модель группы, в которой есть_ множество учреждений и школ.

class Group
  has_many :institutions
  has_many :schools
end

Однако мне нужно, чтобы в моей группе были user_and_belongs_to_many: пользователи, но я хочу, чтобы все пользователи, связанные через учреждения и школы, были такими:

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

Очевидно, что это невозможно, так что мне делать?

1 Ответ

1 голос
/ 17 мая 2012

Просто случайно, вы рассматривали возможность использования наследования одной таблицы, так что школа - это тип учреждения?

Ваш школьный класс унаследован от Учреждения («школа класса <Учреждение»).Кроме того, я думаю, вы бы назвали это как-то иначе, но у вас также может быть «класс GenericInstitution <Institution».Тогда класс вашей группы может выглядеть так: </p>

 class Group
  :has_many :school_users, :through => :schools, 
  :has_many :generic_institution_users, :through => :generic_institutions

   # if you need all of the users at once: 
   :has_many :users, :through => :institutions
 end

Возможно, вам придется указать один или два внешних ключа, чтобы это сработало для вас.

Кроме того, я не могуВы можете понять, что такое: институциональное образование, но если вам это действительно нужно, вы можете сделать то же самое там (может быть, «класс институциональное образование <образование», или, может быть, наоборот). </p>

...