У меня возникла небольшая проблема с настройкой Rails _много :через :полиморфное родство.
Я знаю, что эта тема хорошозадокументирована на SO, но я думаю, что моя проблема сводится к моей модели и иностранным _именам ключей, а не к синтаксису, т.е. я думаю, что это Проблема «я слишком долго смотрел на код», которая просто требует другого взгляда.
Во всяком случае, у меня есть следующая настройка.:
class Milestone < ActiveRecord::Base
has_many :responsible_items, :as => :responsibility
has_many :responsible, :through => :responsible_items
end
class ResponsibleItem < ActiveRecord::Base
belongs_to :responsible, :class_name => "User"
belongs_to :responsibility, :polymorphic => true
end
class User < ActiveRecord::Base
has_many :responsible_items, :foreign_key => :responsible_id
has_many :responsibilities, :through => :responsible_items
end
Кажется, это работает нормально, без ошибок, со стороны Milestone. Например, в терминале я могу написать:
Milestone.first.responsible
… и получить пустую коллекцию, как я и ожидал.
Однако с точки зрения пользователя запуск:
User.first.responsibilities
…возвращает ошибку AR:
ActiveRecord::HasManyThroughAssociationPolymorphicSourceError: Cannot have a has_many :through association 'User#responsibilities' on the polymorphic object 'Responsibility#responsibility'.
Я предполагаю, что проблема как-то связана с тем фактом, что я имею в виду отношение пользователя как :ответственный. Это правильно?
Спасибо за любую помощь.