Rails 3 ActiveRecord渴望加载范围

Val*_*sin 15 activerecord ruby-on-rails

请帮帮我.我有一些与其他模型有关联的模型.例如:profile => has_many:statistics在统计模型中我有一些范围:

scope last_ten, limit(10).order('online desc')
Run Code Online (Sandbox Code Playgroud)

问题是如何在此范围内使用预先加载?我不需要每个配置文件的统计记录.只有范围.

现在我只能用

 User.profiles.includes(:statistics)
Run Code Online (Sandbox Code Playgroud)

谢谢.

apn*_*ing 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)
Run Code Online (Sandbox Code Playgroud)

  • 并且没有办法只加载所需的记录?好像我总是会遇到n + 1问题或将所有对象加载到内存中?如果我有超过数千条记录,会是什么样的?我能做什么?! (7认同)