いくつかのモデルでは、これらの関連付けの多くの関連付けや関連付けをロードする必要があるため、もう1つの答えは役に立たなかった。 2つのオプションがあることがわかりました。関連付けを変更して、必要なスコープごとに関連付けを行うか、またはhas_many関連を持つクラスのメソッドに変換します。私ができるので、私はこの方法が好適であることが判明
class Newspaper < ActiveRecord::Base
has_many :articles
def articles_public
articles.reject &:private
end
def articles_private
articles.select &:private
end
end
class Article
belongs_to :newspaper
belongs_to :author
has_one :source
end
:だから私の例では、私は変更
@newspaper = Newspaper.find params[:id], :include => {
:articles => {
:author => true,
:source => true
}
}
:
class Newspaper < ActiveRecord::Base
has_many :articles
end
class Article
belongs_to :newspaper
belongs_to :author
has_one :source
named_scope :private, :conditions => { :private => true }
named_scope :public, :conditions => { :private => false }
end
をする私はの線に沿って何かを行うために必要な新聞を見つけて、すべてのarticle.privateをarticle_privateに変更するときに、今すぐ熱心な記事を読み込みます。
has_many :articles_private, :class_name => 'Article', :conditions {:private => true}
has_many :articles_public, :class_name => 'Article', :conditions {:private => false}
関連するすべての記事が必要な場合は、両方ともそれらのアイテムを読み込む必要があります。
私がブログの投稿を正しく理解していれば、それは私にすべてのコメントを付けたスコープのある記事を与えるだろう。これはArticle.approved.all(:include =>:comments)と同じです。私が探していたのはコメントのスコープだけだったので、各記事はすべてのコメントではなく承認されたコメントを読み込むようになっていました。 –