1

すでにロードされているコレクションからいくつかの関連付けを熱心にロードするコードを書きました。

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

Article クラスに定義されたスコープがあり、いくつかのレベルでいくつかの記事の関連付けを熱心にロードする準備ができています。

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

ありがとうございました !

4

2 に答える 2

0

他の場合と同じようにスコープを呼び出さないのはなぜですか。

@articles = Article.eager_loading_for_comments

?

于 2012-11-28T16:27:39.610 に答える
0

where をスコープにチェーンするのはどうですか:

Article.eager_loading_for_comments.where("blah blah blah")
于 2012-11-28T16:28:02.310 に答える