Rails子对象查询导致N + 1问题

Duc*_*tal 1 activerecord ruby-on-rails

在编写一些个人使用的应用程序时.我发现孩子的查询并不像它看起来那么好.

例如,我有2个对象

Category has_many Files
File belongs_to Category
Run Code Online (Sandbox Code Playgroud)

File.category将访问其父类别.但这导致了着名的N + 1问题.

例如,我希望我的主页使用类似的东西列出20个最新文件及其相应的类别

for file in @files
  %p
    = file.name
    = file.category.name
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

mar*_*ark 6

@files = File.find(:all, :limit => 20, :order => "created at desc", :include => :category)
Run Code Online (Sandbox Code Playgroud)