Unsuccessful attempt to properly eager load screenshots.

Currently the virtual attribute "image_url" in the screenshots model
apparently runs one SQL query each to get the packages data.
This commit is contained in:
Christoph Haas 2013-08-07 00:18:20 +02:00
parent 88dfb33721
commit 76d19f7e78
3 changed files with 14 additions and 8 deletions

View file

@ -3,16 +3,22 @@ class PackagesController < ApplicationController
@packages = Package
if params[:with_screenshots]=='yes'
@packages = @packages.joins(:screenshots).where('screenshots.approved = ?', true)
#@packages = @packages.joins(:screenshots).where('screenshots.approved = ?', true)
# Limit the packages to those that have approved screenshots.
# Also eager-load the screenshots.
@packages = @packages.includes(:screenshots).where("screenshots.approved"=>true)
#@packages = @packages.where("screenshots.approved"=>true)
end
if params[:search]
query = '%'+params[:search]+'%'
#if params[:search]
#query = '%'+params[:search]+'%'
# TODO: Index on lower(…) is missing. Does not scale.
# TODO: Consider using a serious search engine like Xapian or ElasticSearch.
@packages = @packages.where("lower(description) like lower(?) or lower(name) like lower(?)", query, query)
end
#@packages = @packages.where("lower(description) like lower(?) or lower(name) like lower(?)", query, query)
#end
#@packages = @packages.order('name').includes(:screenshots).limit(20)
@packages = @packages.order('name').limit(20)
end