У меня есть несколько моделей - 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}"
В настоящее время - понятно, почему включение/объединение не работает, но, может быть, вы знаете, как оптимизировать запросы к БД с данными учетных записей?
Не могли бы вы опубликовать код с вашей точки зрения? –
Обновлено с представлением :) –
Я обновил свой вопрос :) Извините за недостающие детали :) –