English 中文(简体)
包括铁路优化协会
原标题:Including associations optimization in Rails

I m 寻求帮助,使协会能够按要求负荷工作。

这是一个简化的例子。 我有3个模型:Post,Comment,User/code>。 参考资料:Post 有许多评论和<代码>Comment参考User(作者)。 在我上台时,我期望看到邮局+所有评论(及其各自的作者姓名)。 这就需要以下两个问题:

select * from Post -- to get post data (1 row)
select * from Comment inner join User -- to get comment + usernames (N rows)

在法典中,我有:

Post.find(params[:id], :include => { :comments => [:author] }

但是,它不像预期的那样工作:正如我在后面看到的那样,N+1的点击仍然重新发生(其中一些点击)。 我如何能够优化这一努力?

UPD After some investigation, it looks like code was correct, but it doesn t work as expected in case I have named belongs_to in a Comment model. Once I changed from :author to :user, it worked as expected.

问题回答

在我的项目中,我与您的<代码>Post、Comment/code>和User模式有着类似的关系。 我只看到3个实际的q。

Post.find(1, :include => { :comments => [:author] })

从减标记录中可以看出这三个问题。

SELECT * FROM `posts` WHERE (`posts`.`id` = 1)
SELECT `comments`.* FROM `comments` WHERE (`comments`.`post_id` = 1)
SELECT * FROM `authors` WHERE (`authors`.`id` IN (4,8,15,16,23,42)) 

如果你满意2/3的询问,你可以尝试:

@post = Post.find params[:id]
@comments = Comments.find_by_post_id(params[:id], :include => [:auth或])

@comments = @post.comments(:include => [:auth或])

Edit: 您:

Post.find(params[:id], :include => { :comments => :auth或 }





相关问题
rails collection_select vs. select

collection_select and select Rails helpers: Which one should I use? I can t see a difference in both ways. Both helpers take a collection and generates options tags inside a select tag. Is there a ...

SSL slowness in EC2

We ve deployed our rails app to EC2. In our setup, we have two proxies on small instances behind round-robin DNS. These run nginx load balancers for a dynamically growing and shrinking farm of web ...

Auth-code with A-Za-z0-9 to use in an URL parameter

As part of a web application I need an auth-code to pass as a URL parameter. I am currently using (in Rails) : Digest::SHA1.hexdigest((object_id + rand(255)).to_s) Which provides long strings like : ...

RubyCAS-Client question: Rails

I ve installed RubyCAS-Client version 2.1.0 as a plugin within a rails app. It s working, but I d like to remove the ?ticket= in the url. Is this possible?

activerecord has_many :through find with one sql call

I have a these 3 models: class User < ActiveRecord::Base has_many :permissions, :dependent => :destroy has_many :roles, :through => :permissions end class Permission < ActiveRecord::...

Ordering a hash to xml: Rails

I m building an xml document from a hash. The xml attributes need to be in order. How can this be accomplished? hash.to_xml

Text Editor for Ruby-on-Rails

guys which text editor is good for Rubyonrails? i m using Windows and i was using E-Texteditor but its not free n its expired now can anyone plese tell me any free texteditor? n which one is best an ...

How to get SQL queries for each user where env is production

I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...