使用另一个包含关联的条件,急切加载多态关联

时间:2011-11-28 17:38:39

标签: sql ruby-on-rails-3 polymorphism eager-loading

我有一个活动供稿,我想热切地加载所有存在的活动。

每个活动都有一个actor,它是多态的。假设可以有用户或组作为参与者。

然后我有一个UserActivity表来知道哪些活动被复制到哪个用户。

现在,对于活动供稿,我想急切加载每个活动的参与者的所有用户和组。

我一直在阅读,我知道它会生成多个SQL条件,因为有一个多态关联来做include。我现在的判决是:

@activities = Activity.find(:all, :order=>"activities.updated_at DESC", :conditions => ['user_activities.user_id=?', @user.id], :include=> [:user_activities, :actor])

但是,这会引发错误:

  
    

“无法急切加载多态关联:actor”

  

我尝试了同样的方法,但没有条件且确实有效,只为参与活动的参与者生成SQL查询。 (下一句话确实有效)

@activities = Activity.find(:all, :order=>"activities.updated_at DESC",  :include=> [ :user_activities, :actor])

但当然,这不是我想做的事情,因为我想要有条件,但我没有看到让它发挥作用的方法。我已尝试使用where而不是condition选项但它不起作用,我使用了包含而不是因为我读到了:包含已被弃用为Rails 3。

这对应用程序非常重要,因为它是活动源,因此您可以想象它会产生大量流量。

每次重新加载Feed以获取活动中的所有用户和组时,我都不想进行查询,因为如果一次显示的所有活动都没有一种类型的actor ,我会做一个我可以保存的SQL查询。

0 个答案:

没有答案