2011-10-29 60 views
14

请帮助我。 我有一些has_many与其他模型关联的模型。 例如:配置=>的has_many:统计 和统计模型里面,我有一些范围:Rails 3 ActiveRecord渴望加载范围

scope last_ten, limit(10).order('online desc') 

而问题是,我该如何使用贪婪加载这个范围是什么?我不需要统计资料的每个记录。只有范围。

现在我只能使用

User.profiles.includes(:statistics) 

感谢。

回答

19

如这里解释:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

这是更好地定义自定义关系:

class Profile < ActiveRecord::Base 
    has_many :most_recent_stats, :class_name => 'Statistic', :order => 'online DESC', :limit => 10 
    ... 
end 

User.profiles.includes(:most_recent_stats) 
+0

在上述情况下,所有的统计信息属于个人资料将被加载。根据文档http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html – nkm

+0

当然,很好的精度,这是我提供的链接 – apneadiving

+7

并且没有办法加载只需要记录?好像我会一直有n + 1个问题或者将所有对象加载到内存中?如果我有超过数千条记录会怎样? 我能做什么? – ValeriiVasin