我有模型Follows,其中有许多模型的多态关联。我有TimlineEvents,它具有与相同模型的多个plymorphic关联。用户有很多关注。如果我想为我的用户获取所有TimelineEvents,我需要查看每个Follow的follow_type和follow_id,并将其与TimeineEvents的actor_type和actor_id匹配。我可以用很长的arel表达式做到这一点,但很难阅读。我还有什么其他选择?我已经非常接近:
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中的所有三个多态关联合并为一个?