составные ключевые ассоциации в рельсах 3 - PullRequest
3 голосов
/ 21 марта 2012

У меня есть 4 модели в приложении для рельсов:

Классная комната / Учитель / Ученик / Назначение

Мне нужно иметь отношения:

n * n между Классной комнатой иУчитель
n * n отношения между учителем и учеником

Для этих двух отношений это нормально, так как я создам 2 миграции для has_and_belongs_to_many.

Для модели назначений мне нужносвязать его с 3 предыдущими моделями:

Таблица назначений должна выглядеть следующим образом:
- id
- label
- classroom_id
- teacher_id
- pupil_id

Является ли следующий подход наилучшим для моделирования последних отношений?

class Assignment < ActiveRecord::Base
  belongs_to: classroom
  belongs_to: teacher
  belongs_to: pupil
end

class classroom < ActiveRecord::Base
  has_many: assignments
end

class teacher < ActiveRecord::Base
  has_many: assignments
end

class pupils < ActiveRecord::Base
  has_many: assignments
end

1 Ответ

0 голосов
/ 21 марта 2012

Рассмотрим полиморфную ассоциацию http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

class Assignment < ActiveRecord::Base
  belongs_to: assignable, :polymorphic => true
end

class Classroom < ActiveRecord::Base
  has_many :assignment, :as => :assignable
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...