预加载与现有范围的关联

时间:2012-11-28 16:21:33

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord eager-loading

我编写了一段代码,以便从已加载的集合中加载一些关联:

@articles= Article.find_by_sql("SELECT * FROM articles WHERE blabla")    
ActiveRecord::Associations::Preloader.new(@articles, {:comments => {:user => :permissions}}).run

我的文章类中定义了一个范围,准备在几个级别上加载一些文章关联:

class Article << ActiveRecord::Base
  [...]      

  scope :eager_loading_for_comments, includes(:comments => {:user => :permissions})
end

我可以在第一个代码中使用此范围吗?这样的方式:

ActiveRecord::Associations::Preloader.new(@articles, :eager_loading_for_comments).run

或者:

ActiveRecord::Associations::Preloader.new(@articles, Article.eager_loading_for_comments).run

谢谢!

2 个答案:

答案 0 :(得分:0)

为什么不像其他任何人一样调用范围,例如

@articles = Article.eager_loading_for_comments

答案 1 :(得分:0)

如何将范围链接到范围:

Article.eager_loading_for_comments.where("blah blah blah")