From 30cd66e1521bc760df45908adb2f7d3ba6683900 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sun, 14 Jan 2018 13:06:18 -0500 Subject: Cached a Pokémon's latest revision MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This removes the need to use a GROUP or DISTINCT in eager-loading Pokémon on the front page. It duplicates data, but provisions are in place to keep the cache up-to-date. When a Pokémon record is updated, it is required that its cache points to the current revision. When a revision is created, it updates the Pokémon's cache to point to it, because a new revision will always be the most recent one, and it is impossible to reorder revisions. This does not affect the number of queries used on the front page (see #1). refs #4 --- app/controllers/pokeviewer/pokemon_controller.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'app/controllers') diff --git a/app/controllers/pokeviewer/pokemon_controller.rb b/app/controllers/pokeviewer/pokemon_controller.rb index 0e19c6a..f2d2187 100644 --- a/app/controllers/pokeviewer/pokemon_controller.rb +++ b/app/controllers/pokeviewer/pokemon_controller.rb @@ -7,8 +7,7 @@ module Pokeviewer order(trainer_id: :asc). order(box: :asc). order(slot: :asc). - select(:uuid).distinct. - order("pokeviewer_revisions.sequential_id DESC"). + joins(:current). includes(:current). chunk do |p| if p.trainer_id.nil? -- cgit 1.4.1