【发布时间】:2011-03-16 02:37:55
【问题描述】:
不确定这可能属于性能部分以及模型/数据库部分,所以这里......
假设我有 3 个模型:
Movie {
has_one :interest, :as => :resource
}
Song {
has_one :interest, :as => :resource
}
Story {
has_one :interest, :as => :resource
}
和...
Interest {
belongs_to :resource, :polymorphic => true
}
现在,如果我需要所有电影的所有兴趣列表,并且我还想显示这些 Movies 对象的创建日期(说明它们的年龄),那么我使用 resource_type 属性上的查找,然后使用 @ some_interest.resource.created_at.
问题是如果我有 100 个电影兴趣,那么我会得到 101 个查询,对吗?所以线性退化。我尝试在查询调用中使用 :include => [:resource],但它说不能在多态关联中使用 include。
我怎样才能预先加载或优化这个问题以避免这种严重的降级??
任何帮助将不胜感激!
【问题讨论】:
-
我想这会回答你的问题:stackoverflow.com/questions/2390017/…
标签: ruby-on-rails activerecord eager-loading