Полиморфное к Полиморфному объединению - PullRequest
1 голос
/ 30 января 2012

У меня есть модель Follows, которая имеет полиморфную ассоциацию со многими моделями. У меня есть TimlineEvents, который имеет несколько плиморфных ассоциаций с одними и теми же моделями. У пользователя много подписчиков. Если я хочу получить все TimelineEvents для своего пользователя, мне нужно посмотреть на follow_type и follow_id каждого Follow и сопоставить его с actor_type и actor_id в TimeineEvents. Я могу сделать это в длинном выражении, но это трудно прочитать. Какие у меня есть другие варианты? Я довольно близко подошел к:

has_many :actor_events, :class_name => 'TimelineEvent', :primary_key => "followable_id", :foreign_key => "actor_id", :conditions =>  Proc.new { "actor_type = '#{self.send(:followable_type)}'" }

но происходит сбой, потому что self является User, а не Follow при вызове из пользовательской модели. Итак, я получаю: неопределенный метод `followable_type 'для пользователя. Любая помощь приветствуется.

Бонусный вопрос: Как я могу объединить все три полиморфных ассоциации в TimelineEvents в одно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...