У меня есть модель 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 в одно?