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 --- test/dummy/db/schema.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/dummy/db/schema.rb b/test/dummy/db/schema.rb index 9752892..5f8c1c0 100644 --- a/test/dummy/db/schema.rb +++ b/test/dummy/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20180113200119) do +ActiveRecord::Schema.define(version: 20180114170238) do create_table "pokeviewer_abilities", force: :cascade do |t| t.string "name", limit: 191, null: false @@ -76,6 +76,8 @@ ActiveRecord::Schema.define(version: 20180113200119) do t.integer "slot" t.integer "location_id" t.string "pokeball", null: false + t.integer "current_id" + t.index ["current_id"], name: "index_pokeviewer_pokemon_on_current_id" t.index ["key"], name: "index_pokeviewer_pokemon_on_key", unique: true t.index ["trainer_id"], name: "index_pokeviewer_pokemon_on_trainer_id" t.index ["uuid"], name: "index_pokeviewer_pokemon_on_uuid", unique: true -- cgit 1.4.1