0

У меня есть несколько моделей - NewsArticle, Comment, User (as: author) и Profile.Проблема с нетерпеливой загрузкой вложенных моделей

class NewsArticle < ActiveRecord::Base 
    belongs_to :author, :class_name => "User", :foreign_key => "user_id" 
    has_many :comments, :as => :commentable, :dependent => :destroy, :order => 'created_at', :include => 'translations' 
end 

class Comment < ActiveRecord::Base 
    belongs_to :author, :class_name => "User", :foreign_key => "user_id" 
    belongs_to :commentable, :polymorphic => true, :counter_cache => true 

    default_scope :include => [{:author => :profile}, :translations] 
end 

class User < ActiveRecord::Base 
    has_one :profile 
    accepts_nested_attributes_for :profile 
end 

class Profile < ActiveRecord::Base 
    belongs_to :user 
end 

Как вы можете видеть, - у меня есть default_scope для комментариев авторов жаждущих нагрузки с профилями, но, к сожалению, она не работает :(Также я пытался обновить NewsArticleController с

def show 
    @news_article = NewsArticle.find(params[:id], :include => {:comments => {:author => :profile}}) 
    @comments = @news_article.comments(:order => "created_at DESC") 

    respond_to do |format| 
     format.html 
     format.xml { render :xml => @news_article } 
    end 
    end 

, но ничего изменился :(

Об оказания NewsArticle с комментариями я вижу сумасшедшую нагрузку на базу данных Не могли бы вы мне помочь с оптимизацией

PS:.? соперничает вес ниже

news_articles/show.html.haml

.comments 
    %h2 
    %a{:id => 'comments', :name => 'comments'} 
     - if @news_article.comments_count == 0 
     No comments 
     - else 
     #{pluralize(@news_article.comments_count, I18n.t(:"global.words.comment"))} 

    %ul 
    - @comments.each do |comment| 
     = render :partial => "comment", :object => comment, :locals => {:source => source} 

news_articles/_comment.html.haml

%li.comment.white-box 
    .title 
    %acronym{ :title => "#{comment.created_at.strftime(formatted_datetime)}"} 
     = comment.created_at.strftime(formatted_datetime) 
    %p 
     = I18n.t(:"global.words.by") 
     %a{ :href => "#" } 
     = link_to_author_of comment 

    .text 
    :cbmarkdown 
     #{comment.body} 

    %br/ 
    .controls 
    = link_to I18n.t(:"flags.controls.flag"), flag_comment_path(comment, :source => source), :class => 'flag-link', :rel => 'nofollow' 
    = link_to I18n.t(:"comments.controls.destroy"), comment_path(comment, :source => source), :confirm => I18n.t(:"global.messages.are_you_sure"), :method => :delete 

PPS: Ребята, извините - я забудьте сообщить вы, которые моделируют пользователя и профиль, находятся в другом БД, к которому обращаются

establish_connection "accounts_#{RAILS_ENV}" 

В настоящее время - понятно, почему включение/объединение не работает, но, может быть, вы знаете, как оптимизировать запросы к БД с данными учетных записей?

+0

Не могли бы вы опубликовать код с вашей точки зрения? –

+0

Обновлено с представлением :) –

+0

Я обновил свой вопрос :) Извините за недостающие детали :) –

ответ

0

попытка: присоединяется вместо: включить в свой NewsArticle.find

эта ссылка может оказаться полезным Rails :include vs. :joins

+0

Я обновил свой вопрос :) Извините за недостающие подробности :) –