1

我寫了一段代碼急於負荷已加載的收集一些協會:預緊協會與現有的範圍

@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 

謝謝!

回答

0

爲什麼不按照其他任何方式調用示波器,例如,

@articles = Article.eager_loading_for_comments 

+0

沒了,我的問題(這裏不外露,太複雜的很快,這是一個巨大的查詢與許多加入不參與範圍表。)力量我到一個find_by_sql,所以我不能直接用這個經典的方式使用範圍。 – ronnieonrails

0

怎麼樣的地方鏈接到範圍:

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

nope,我的問題(這裏沒有公開,太複雜了。很快,它是一個很大的查詢,有很多連接到表中並沒有涉及範圍)強迫我去find_by_sql,所以我不能直接用這個經典的方法使用範圍。 – ronnieonrails