Подтвердить что ты не робот

Та же модель для двух ассоциаций, принадлежащих к

У меня есть модель PointOfContact, которая has_many Systems. Со стороны Systems я хочу идентифицировать PointOfContact как либо technical_manager, так и project_manager (или оба). Пока сохраняя только PointOfContact 1 раз в БД.

Моя попытка:

class System < ActiveRecord::Base
  belongs_to :project_manager, :class_name => 'PointOfContact'
  belongs_to :technical_manager, :class_name => 'PointOfContact'
end

class PointOfContact < ActiveRecord::Base
  has_many :systems
end

Когда я запускаю свои спецификации (пример следует), я могу правильно создать ассоциации контактов System. Однако PointOfContact не знает о своей связи с Системой. Почему это?

@sys = System.create
@tm = PointOfContact.create
@pm = PointOfContact.create

@sys.project_manager = @pm
@sys.technical_manager = @tm

@pm.systems.should have(1).items #> expected 1 items, got 0
4b9b3361

Ответ 1

Благодаря jamesw over на RailsForum.com: Одинаковая модель для двух ассоциаций belongs_to найдено решение.

class System < ActiveRecord::Base
  belongs_to :project_manager, :class_name => 'PointOfContact', :foreign_key => 'project_manager_id'
  belongs_to :technical_manager, :class_name => 'PointOfContact', :foreign_key => 'technical_manager_id'
end

class PointOfContact < ActiveRecord::Base
  has_many :project_managed_systems, :class_name => 'System', :foreign_key => 'project_manager_id'
  has_many :technical_managed_systems, :class_name => 'System', :foreign_key => 'technical_manager_id'
end