diff options
-rw-r--r-- | app/controllers/pokeviewer/pokemon_controller.rb | 8 | ||||
-rw-r--r-- | app/jobs/pokeviewer/extract_save_data_job.rb | 4 | ||||
-rw-r--r-- | app/models/pokeviewer/pokemon.rb | 66 | ||||
-rw-r--r-- | app/models/pokeviewer/revision.rb | 68 | ||||
-rw-r--r-- | app/models/pokeviewer/species.rb | 2 | ||||
-rw-r--r-- | app/models/pokeviewer/trainer.rb | 4 | ||||
-rw-r--r-- | app/views/pokeviewer/pokemon/index.html.haml | 12 | ||||
-rw-r--r-- | app/views/pokeviewer/pokemon/show.html.haml | 54 | ||||
-rw-r--r-- | db/migrate/20180113200119_move_species_to_revision.rb | 39 | ||||
-rw-r--r-- | test/dummy/db/schema.rb | 6 |
10 files changed, 152 insertions, 111 deletions
diff --git a/app/controllers/pokeviewer/pokemon_controller.rb b/app/controllers/pokeviewer/pokemon_controller.rb index 49a743c..7a1b9f9 100644 --- a/app/controllers/pokeviewer/pokemon_controller.rb +++ b/app/controllers/pokeviewer/pokemon_controller.rb | |||
@@ -10,9 +10,7 @@ module Pokeviewer | |||
10 | order(slot: :asc). | 10 | order(slot: :asc). |
11 | order("pokeviewer_revisions.sequential_id DESC"). | 11 | order("pokeviewer_revisions.sequential_id DESC"). |
12 | group("pokeviewer_pokemon.uuid"). | 12 | group("pokeviewer_pokemon.uuid"). |
13 | select(:box, :slot, :uuid, :trainer_id, :species_id). | 13 | includes(:revisions). |
14 | select(:ot_gender, :ot_name, :unown_letter). | ||
15 | select("pokeviewer_revisions.nickname AS nickname"). | ||
16 | chunk do |p| | 14 | chunk do |p| |
17 | if p.trainer_id.nil? | 15 | if p.trainer_id.nil? |
18 | -1 | 16 | -1 |
@@ -71,8 +69,8 @@ module Pokeviewer | |||
71 | 69 | ||
72 | def show | 70 | def show |
73 | @pokemon = Pokemon.includes( | 71 | @pokemon = Pokemon.includes( |
74 | :trainer, :species, :location, | 72 | :trainer, :location, |
75 | revisions: [:item, :move_1, :move_2, :move_3, :move_4] | 73 | revisions: [:species, :item, :move_1, :move_2, :move_3, :move_4] |
76 | ).find_by_uuid! params[:id] | 74 | ).find_by_uuid! params[:id] |
77 | end | 75 | end |
78 | end | 76 | end |
diff --git a/app/jobs/pokeviewer/extract_save_data_job.rb b/app/jobs/pokeviewer/extract_save_data_job.rb index e9e0231..d1968af 100644 --- a/app/jobs/pokeviewer/extract_save_data_job.rb +++ b/app/jobs/pokeviewer/extract_save_data_job.rb | |||
@@ -71,7 +71,6 @@ module Pokeviewer | |||
71 | 71 | ||
72 | args["pokemon"].each do |param| | 72 | args["pokemon"].each do |param| |
73 | pk = Pokemon.find_or_create_by!(key: param["key"]) do |r| | 73 | pk = Pokemon.find_or_create_by!(key: param["key"]) do |r| |
74 | r.species_id = param["species"] | ||
75 | r.ot_name = param["otName"] | 74 | r.ot_name = param["otName"] |
76 | r.ot_number = param["otId"] | 75 | r.ot_number = param["otId"] |
77 | r.ot_gender = param["otGender"] | 76 | r.ot_gender = param["otGender"] |
@@ -99,7 +98,7 @@ module Pokeviewer | |||
99 | r.pokeball = Pokemon.pokeball.values[param["pokeball"] - 1] | 98 | r.pokeball = Pokemon.pokeball.values[param["pokeball"] - 1] |
100 | 99 | ||
101 | # Handle Unown form | 100 | # Handle Unown form |
102 | if r.species_id == 201 | 101 | if param["species"] == 201 |
103 | r.unown_letter = Pokemon.unown_letter.values[param["unownLetter"]] | 102 | r.unown_letter = Pokemon.unown_letter.values[param["unownLetter"]] |
104 | end | 103 | end |
105 | end | 104 | end |
@@ -117,6 +116,7 @@ module Pokeviewer | |||
117 | pk.save! | 116 | pk.save! |
118 | 117 | ||
119 | rev = Revision.new(pokemon: pk) | 118 | rev = Revision.new(pokemon: pk) |
119 | rev.species_id = param["species"] | ||
120 | rev.nickname = param["nickname"] | 120 | rev.nickname = param["nickname"] |
121 | rev.experience = param["experience"] | 121 | rev.experience = param["experience"] |
122 | rev.level = param["level"] | 122 | rev.level = param["level"] |
diff --git a/app/models/pokeviewer/pokemon.rb b/app/models/pokeviewer/pokemon.rb index 36ed8a8..db3da5a 100644 --- a/app/models/pokeviewer/pokemon.rb +++ b/app/models/pokeviewer/pokemon.rb | |||
@@ -3,8 +3,6 @@ module Pokeviewer | |||
3 | extend Enumerize | 3 | extend Enumerize |
4 | extend ActiveModel::Naming | 4 | extend ActiveModel::Naming |
5 | 5 | ||
6 | belongs_to :species | ||
7 | |||
8 | has_many :revisions, -> { order "sequential_id ASC" }, dependent: :destroy | 6 | has_many :revisions, -> { order "sequential_id ASC" }, dependent: :destroy |
9 | 7 | ||
10 | belongs_to :trainer, optional: true | 8 | belongs_to :trainer, optional: true |
@@ -78,60 +76,8 @@ module Pokeviewer | |||
78 | uuid | 76 | uuid |
79 | end | 77 | end |
80 | 78 | ||
81 | def icon_path | 79 | def current |
82 | form = "" | 80 | revisions.last |
83 | if species_id == 201 | ||
84 | # Handle Unown form | ||
85 | form = "-#{unown_letter}" | ||
86 | elsif species_id == 386 | ||
87 | # Handle Deoxys forms | ||
88 | if trainer.firered? | ||
89 | form = "-attack" | ||
90 | elsif trainer.leafgreen? | ||
91 | form = "-defense" | ||
92 | elsif trainer.emerald? | ||
93 | form = "-speed" | ||
94 | end | ||
95 | end | ||
96 | |||
97 | "pokeviewer/icons/#{species_id}#{form}.png" | ||
98 | end | ||
99 | |||
100 | def sprite_path | ||
101 | shininess = "normal" | ||
102 | if shiny | ||
103 | shininess = "shiny" | ||
104 | end | ||
105 | |||
106 | game = "ruby-sapphire" | ||
107 | unless trainer.nil? | ||
108 | if (trainer.firered? or trainer.leafgreen?) and (species_id <= 156 or species_id == 216 or species_id == 386) | ||
109 | game = "firered-leafgreen" | ||
110 | elsif trainer.emerald? | ||
111 | game = "emerald" | ||
112 | end | ||
113 | end | ||
114 | |||
115 | form = "" | ||
116 | if species_id == 201 | ||
117 | # Handle Unown forms | ||
118 | form = "-#{unown_letter}" | ||
119 | elsif species_id == 386 | ||
120 | # Handle Deoxys forms | ||
121 | if trainer.firered? | ||
122 | form = "-attack" | ||
123 | elsif trainer.leafgreen? | ||
124 | form = "-defense" | ||
125 | elsif trainer.emerald? | ||
126 | form = "-speed" | ||
127 | end | ||
128 | end | ||
129 | |||
130 | if game == "emerald" | ||
131 | "pokeviewer/sprites/emerald/#{shininess}/#{species_id}#{form}.gif" | ||
132 | else | ||
133 | "pokeviewer/sprites/#{game}/#{shininess}/#{species_id}#{form}.png" | ||
134 | end | ||
135 | end | 81 | end |
136 | 82 | ||
137 | def outsider? | 83 | def outsider? |
@@ -178,14 +124,6 @@ module Pokeviewer | |||
178 | "pokeviewer/items/#{Pokemon.pokeball.values.find_index(pokeball) + 1}.png" | 124 | "pokeviewer/items/#{Pokemon.pokeball.values.find_index(pokeball) + 1}.png" |
179 | end | 125 | end |
180 | 126 | ||
181 | def ability | ||
182 | if second_ability | ||
183 | species.ability_2 | ||
184 | else | ||
185 | species.ability_1 | ||
186 | end | ||
187 | end | ||
188 | |||
189 | def gift_ribbon_description(ribbon) | 127 | def gift_ribbon_description(ribbon) |
190 | if trainer.nil? | 128 | if trainer.nil? |
191 | "" | 129 | "" |
diff --git a/app/models/pokeviewer/revision.rb b/app/models/pokeviewer/revision.rb index e33ac4f..64b0e99 100644 --- a/app/models/pokeviewer/revision.rb +++ b/app/models/pokeviewer/revision.rb | |||
@@ -4,7 +4,7 @@ module Pokeviewer | |||
4 | class Revision < ApplicationRecord | 4 | class Revision < ApplicationRecord |
5 | include ActiveRecord::Diff | 5 | include ActiveRecord::Diff |
6 | 6 | ||
7 | diff :nickname, :level, :hp, :attack, :defense, | 7 | diff :species_id, :nickname, :level, :hp, :attack, :defense, |
8 | :special_attack, :special_defense, :speed, :coolness, :beauty, :cuteness, | 8 | :special_attack, :special_defense, :speed, :coolness, :beauty, :cuteness, |
9 | :smartness, :toughness, :sheen, :item_id, :move_1_id, :move_2_id, | 9 | :smartness, :toughness, :sheen, :item_id, :move_1_id, :move_2_id, |
10 | :move_3_id, :move_4_id, :move_1_pp_bonuses, :move_2_pp_bonuses, | 10 | :move_3_id, :move_4_id, :move_1_pp_bonuses, :move_2_pp_bonuses, |
@@ -17,6 +17,8 @@ module Pokeviewer | |||
17 | belongs_to :pokemon | 17 | belongs_to :pokemon |
18 | acts_as_sequenced scope: :pokemon_id | 18 | acts_as_sequenced scope: :pokemon_id |
19 | 19 | ||
20 | belongs_to :species | ||
21 | |||
20 | validates :nickname, presence: true | 22 | validates :nickname, presence: true |
21 | 23 | ||
22 | validates :experience, presence: true, | 24 | validates :experience, presence: true, |
@@ -140,6 +142,70 @@ module Pokeviewer | |||
140 | less_than_or_equal_to: 4, | 142 | less_than_or_equal_to: 4, |
141 | only_integer: true} | 143 | only_integer: true} |
142 | 144 | ||
145 | def icon_path | ||
146 | form = "" | ||
147 | if species_id == 201 | ||
148 | # Handle Unown form | ||
149 | form = "-#{pokemon.unown_letter}" | ||
150 | elsif species_id == 386 | ||
151 | # Handle Deoxys forms | ||
152 | if pokemon.trainer.firered? | ||
153 | form = "-attack" | ||
154 | elsif pokemon.trainer.leafgreen? | ||
155 | form = "-defense" | ||
156 | elsif pokemon.trainer.emerald? | ||
157 | form = "-speed" | ||
158 | end | ||
159 | end | ||
160 | |||
161 | "pokeviewer/icons/#{species_id}#{form}.png" | ||
162 | end | ||
163 | |||
164 | def sprite_path | ||
165 | shininess = "normal" | ||
166 | if pokemon.shiny | ||
167 | shininess = "shiny" | ||
168 | end | ||
169 | |||
170 | game = "ruby-sapphire" | ||
171 | unless pokemon.trainer.nil? | ||
172 | if (pokemon.trainer.firered? or pokemon.trainer.leafgreen?) and (species_id <= 156 or species_id == 216 or species_id == 386) | ||
173 | game = "firered-leafgreen" | ||
174 | elsif pokemon.trainer.emerald? | ||
175 | game = "emerald" | ||
176 | end | ||
177 | end | ||
178 | |||
179 | form = "" | ||
180 | if species_id == 201 | ||
181 | # Handle Unown forms | ||
182 | form = "-#{pokemon.unown_letter}" | ||
183 | elsif species_id == 386 | ||
184 | # Handle Deoxys forms | ||
185 | if pokemon.trainer.firered? | ||
186 | form = "-attack" | ||
187 | elsif pokemon.trainer.leafgreen? | ||
188 | form = "-defense" | ||
189 | elsif pokemon.trainer.emerald? | ||
190 | form = "-speed" | ||
191 | end | ||
192 | end | ||
193 | |||
194 | if game == "emerald" | ||
195 | "pokeviewer/sprites/emerald/#{shininess}/#{species_id}#{form}.gif" | ||
196 | else | ||
197 | "pokeviewer/sprites/#{game}/#{shininess}/#{species_id}#{form}.png" | ||
198 | end | ||
199 | end | ||
200 | |||
201 | def ability | ||
202 | if pokemon.second_ability | ||
203 | species.ability_2 | ||
204 | else | ||
205 | species.ability_1 | ||
206 | end | ||
207 | end | ||
208 | |||
143 | def move_1_pp | 209 | def move_1_pp |
144 | move_1.pp * (5 + move_1_pp_bonuses) / 5 | 210 | move_1.pp * (5 + move_1_pp_bonuses) / 5 |
145 | end | 211 | end |
diff --git a/app/models/pokeviewer/species.rb b/app/models/pokeviewer/species.rb index 429e762..aae66cc 100644 --- a/app/models/pokeviewer/species.rb +++ b/app/models/pokeviewer/species.rb | |||
@@ -2,7 +2,7 @@ module Pokeviewer | |||
2 | class Species < ApplicationRecord | 2 | class Species < ApplicationRecord |
3 | extend Enumerize | 3 | extend Enumerize |
4 | 4 | ||
5 | has_many :pokemon, dependent: :restrict_with_exception | 5 | has_many :revisions, dependent: :restrict_with_exception |
6 | 6 | ||
7 | validates :name, presence: true, uniqueness: true | 7 | validates :name, presence: true, uniqueness: true |
8 | 8 | ||
diff --git a/app/models/pokeviewer/trainer.rb b/app/models/pokeviewer/trainer.rb index b79547d..281e0aa 100644 --- a/app/models/pokeviewer/trainer.rb +++ b/app/models/pokeviewer/trainer.rb | |||
@@ -39,11 +39,11 @@ module Pokeviewer | |||
39 | validates :box_14_name, presence: true | 39 | validates :box_14_name, presence: true |
40 | 40 | ||
41 | def party | 41 | def party |
42 | pokemon.party.includes(:species, :revisions) | 42 | pokemon.party.includes(revisions: [:species]) |
43 | end | 43 | end |
44 | 44 | ||
45 | def box(n) | 45 | def box(n) |
46 | pokemon.box(n).includes(:species, :revisions) | 46 | pokemon.box(n).includes(revisions: [:species]) |
47 | end | 47 | end |
48 | 48 | ||
49 | def box_name(n) | 49 | def box_name(n) |
diff --git a/app/views/pokeviewer/pokemon/index.html.haml b/app/views/pokeviewer/pokemon/index.html.haml index e1793dc..67ea2cf 100644 --- a/app/views/pokeviewer/pokemon/index.html.haml +++ b/app/views/pokeviewer/pokemon/index.html.haml | |||
@@ -8,8 +8,8 @@ | |||
8 | %h3 Party | 8 | %h3 Party |
9 | - party.each do |p| | 9 | - party.each do |p| |
10 | %li | 10 | %li |
11 | %span.party-icon= image_tag p.icon_path | 11 | %span.party-icon= image_tag p.current.icon_path |
12 | %span.party-name= link_to p.nickname, p | 12 | %span.party-name= link_to p.current.nickname, p |
13 | - boxes.each do |box| | 13 | - boxes.each do |box| |
14 | .pc-box | 14 | .pc-box |
15 | %h3= box[:name] | 15 | %h3= box[:name] |
@@ -21,9 +21,9 @@ | |||
21 | - if p.nil? | 21 | - if p.nil? |
22 | .spacer | 22 | .spacer |
23 | - else | 23 | - else |
24 | = link_to image_tag(p.icon_path), p | 24 | = link_to image_tag(p.current.icon_path), p |
25 | .pc-data.pkv-hover | 25 | .pc-data.pkv-hover |
26 | .pc-data-name= p.nickname | 26 | .pc-data-name= p.current.nickname |
27 | .pc-data-ot | 27 | .pc-data-ot |
28 | OT/ | 28 | OT/ |
29 | %span{ class: p.ot_gender }>= p.ot_name | 29 | %span{ class: p.ot_gender }>= p.ot_name |
@@ -34,9 +34,9 @@ | |||
34 | %ul.pokemon-list | 34 | %ul.pokemon-list |
35 | - @unaccounted.each do |p| | 35 | - @unaccounted.each do |p| |
36 | %li.pc-pokemon.pkv-has-hover | 36 | %li.pc-pokemon.pkv-has-hover |
37 | = link_to image_tag(p.icon_path), p | 37 | = link_to image_tag(p.current.icon_path), p |
38 | .pc-data.pkv-hover | 38 | .pc-data.pkv-hover |
39 | .pc-data-name= p.nickname | 39 | .pc-data-name= p.current.nickname |
40 | .pc-data-ot | 40 | .pc-data-ot |
41 | OT/ | 41 | OT/ |
42 | %span{ class: p.ot_gender }>= p.ot_name | 42 | %span{ class: p.ot_gender }>= p.ot_name |
diff --git a/app/views/pokeviewer/pokemon/show.html.haml b/app/views/pokeviewer/pokemon/show.html.haml index 0daabb0..3f2750c 100644 --- a/app/views/pokeviewer/pokemon/show.html.haml +++ b/app/views/pokeviewer/pokemon/show.html.haml | |||
@@ -2,44 +2,44 @@ | |||
2 | .pokemon-basics | 2 | .pokemon-basics |
3 | .pokemon-nameline | 3 | .pokemon-nameline |
4 | = image_tag(@pokemon.pokeball_icon_path, class: "pokemon-ball") | 4 | = image_tag(@pokemon.pokeball_icon_path, class: "pokemon-ball") |
5 | %span.pokemon-name= @pokemon.revisions.last.nickname | 5 | %span.pokemon-name= @pokemon.current.nickname |
6 | %span.pokemon-gender{ class: @pokemon.gender }= @pokemon.gender_symbol | 6 | %span.pokemon-gender{ class: @pokemon.gender }= @pokemon.gender_symbol |
7 | .pokemon-level= "Lv. #{@pokemon.revisions.last.level}" | 7 | .pokemon-level= "Lv. #{@pokemon.current.level}" |
8 | .pokemon-image | 8 | .pokemon-image |
9 | .pokemon-image-wrap | 9 | .pokemon-image-wrap |
10 | = image_tag @pokemon.sprite_path, class: "pokemon-sprite" | 10 | = image_tag @pokemon.current.sprite_path, class: "pokemon-sprite" |
11 | - if @pokemon.shiny? | 11 | - if @pokemon.shiny? |
12 | = image_tag "pokeviewer/ShinyIVStar.png", class: "pkv-shiny-star" | 12 | = image_tag "pokeviewer/ShinyIVStar.png", class: "pkv-shiny-star" |
13 | - if @pokemon.revisions.last.item.nil? | 13 | - if @pokemon.current.item.nil? |
14 | .pokemon-item-label Item | 14 | .pokemon-item-label Item |
15 | .pokemon-item None | 15 | .pokemon-item None |
16 | - else | 16 | - else |
17 | .pokemon-item-label.with-item Item | 17 | .pokemon-item-label.with-item Item |
18 | .pokemon-item.pkv-has-hover | 18 | .pokemon-item.pkv-has-hover |
19 | = image_tag(@pokemon.revisions.last.item.icon_path) | 19 | = image_tag(@pokemon.current.item.icon_path) |
20 | = @pokemon.revisions.last.item.name | 20 | = @pokemon.current.item.name |
21 | .pkv-hover | 21 | .pkv-hover |
22 | .pc-data-name= @pokemon.revisions.last.item.name | 22 | .pc-data-name= @pokemon.current.item.name |
23 | - if @pokemon.revisions.last.item.tm? | 23 | - if @pokemon.current.item.tm? |
24 | .pc-move-name= @pokemon.revisions.last.item.move.name | 24 | .pc-move-name= @pokemon.current.item.move.name |
25 | = @pokemon.revisions.last.item.description(@pokemon.trainer.game) | 25 | = @pokemon.current.item.description(@pokemon.trainer.game) |
26 | .pokemon-tab.pokemon-details | 26 | .pokemon-tab.pokemon-details |
27 | %table | 27 | %table |
28 | %tr | 28 | %tr |
29 | %th Pokédex No. | 29 | %th Pokédex No. |
30 | %td | 30 | %td |
31 | .table-bubble.tb-top= @pokemon.species_id | 31 | .table-bubble.tb-top= @pokemon.current.species_id |
32 | %tr | 32 | %tr |
33 | %th Name | 33 | %th Name |
34 | %td | 34 | %td |
35 | .table-bubble= @pokemon.species.name | 35 | .table-bubble= @pokemon.current.species.name |
36 | %tr | 36 | %tr |
37 | %th Type | 37 | %th Type |
38 | %td | 38 | %td |
39 | .table-bubble | 39 | .table-bubble |
40 | = image_for_type @pokemon.species.type_1 | 40 | = image_for_type @pokemon.current.species.type_1 |
41 | - if @pokemon.species.type_2 | 41 | - if @pokemon.current.species.type_2 |
42 | = image_for_type @pokemon.species.type_2 | 42 | = image_for_type @pokemon.current.species.type_2 |
43 | %tr | 43 | %tr |
44 | %th OT | 44 | %th OT |
45 | %td.ot-gender{ class: @pokemon.ot_gender } | 45 | %td.ot-gender{ class: @pokemon.ot_gender } |
@@ -58,7 +58,7 @@ | |||
58 | %tr | 58 | %tr |
59 | %th HP | 59 | %th HP |
60 | %td | 60 | %td |
61 | .table-bubble.tb-top= @pokemon.revisions.last.hp | 61 | .table-bubble.tb-top= @pokemon.current.hp |
62 | %tr | 62 | %tr |
63 | %th | 63 | %th |
64 | Attack | 64 | Attack |
@@ -67,7 +67,7 @@ | |||
67 | - if @pokemon.nature_hinders?(:attack) | 67 | - if @pokemon.nature_hinders?(:attack) |
68 | %span.nature-hinder - | 68 | %span.nature-hinder - |
69 | %td | 69 | %td |
70 | .table-bubble= @pokemon.revisions.last.attack | 70 | .table-bubble= @pokemon.current.attack |
71 | %tr | 71 | %tr |
72 | %th | 72 | %th |
73 | Defense | 73 | Defense |
@@ -76,7 +76,7 @@ | |||
76 | - if @pokemon.nature_hinders?(:defense) | 76 | - if @pokemon.nature_hinders?(:defense) |
77 | %span.nature-hinder - | 77 | %span.nature-hinder - |
78 | %td | 78 | %td |
79 | .table-bubble= @pokemon.revisions.last.defense | 79 | .table-bubble= @pokemon.current.defense |
80 | %tr | 80 | %tr |
81 | %th | 81 | %th |
82 | Sp. Atk | 82 | Sp. Atk |
@@ -85,7 +85,7 @@ | |||
85 | - if @pokemon.nature_hinders?(:special_attack) | 85 | - if @pokemon.nature_hinders?(:special_attack) |
86 | %span.nature-hinder - | 86 | %span.nature-hinder - |
87 | %td | 87 | %td |
88 | .table-bubble= @pokemon.revisions.last.special_attack | 88 | .table-bubble= @pokemon.current.special_attack |
89 | %tr | 89 | %tr |
90 | %th | 90 | %th |
91 | Sp. Def | 91 | Sp. Def |
@@ -94,7 +94,7 @@ | |||
94 | - if @pokemon.nature_hinders?(:special_defense) | 94 | - if @pokemon.nature_hinders?(:special_defense) |
95 | %span.nature-hinder - | 95 | %span.nature-hinder - |
96 | %td | 96 | %td |
97 | .table-bubble= @pokemon.revisions.last.special_defense | 97 | .table-bubble= @pokemon.current.special_defense |
98 | %tr | 98 | %tr |
99 | %th | 99 | %th |
100 | Speed | 100 | Speed |
@@ -103,7 +103,7 @@ | |||
103 | - if @pokemon.nature_hinders?(:speed) | 103 | - if @pokemon.nature_hinders?(:speed) |
104 | %span.nature-hinder - | 104 | %span.nature-hinder - |
105 | %td | 105 | %td |
106 | .table-bubble.tb-bottom= @pokemon.revisions.last.speed | 106 | .table-bubble.tb-bottom= @pokemon.current.speed |
107 | %tr.pokemon-nature-label | 107 | %tr.pokemon-nature-label |
108 | %th{ colspan: 2 } Nature | 108 | %th{ colspan: 2 } Nature |
109 | %tr | 109 | %tr |
@@ -116,18 +116,18 @@ | |||
116 | %th | 116 | %th |
117 | %td | 117 | %td |
118 | .tb-only.pkv-has-hover | 118 | .tb-only.pkv-has-hover |
119 | = @pokemon.ability.name | 119 | = @pokemon.current.ability.name |
120 | .pkv-hover | 120 | .pkv-hover |
121 | .pc-data-name= @pokemon.ability.name | 121 | .pc-data-name= @pokemon.current.ability.name |
122 | = @pokemon.ability.description | 122 | = @pokemon.current.ability.description |
123 | .pokemon-tab.pokemon-moves | 123 | .pokemon-tab.pokemon-moves |
124 | %table | 124 | %table |
125 | - (1..4).each do |i| | 125 | - (1..4).each do |i| |
126 | = move_details @pokemon.revisions.last, i | 126 | = move_details @pokemon.current, i |
127 | .pokemon-tab.pokemon-contest= condition_diagram @pokemon.revisions.last | 127 | .pokemon-tab.pokemon-contest= condition_diagram @pokemon.current |
128 | .pokemon-tab.pokemon-ribbons | 128 | .pokemon-tab.pokemon-ribbons |
129 | %ul | 129 | %ul |
130 | - @pokemon.revisions.last.ribbons.each do |ribbon| | 130 | - @pokemon.current.ribbons.each do |ribbon| |
131 | %li.pkv-has-hover | 131 | %li.pkv-has-hover |
132 | = image_tag("pokeviewer/ribbons/#{ribbon[:filename]}") | 132 | = image_tag("pokeviewer/ribbons/#{ribbon[:filename]}") |
133 | .pkv-hover | 133 | .pkv-hover |
diff --git a/db/migrate/20180113200119_move_species_to_revision.rb b/db/migrate/20180113200119_move_species_to_revision.rb new file mode 100644 index 0000000..8b94d48 --- /dev/null +++ b/db/migrate/20180113200119_move_species_to_revision.rb | |||
@@ -0,0 +1,39 @@ | |||
1 | class MoveSpeciesToRevision < ActiveRecord::Migration[5.1] | ||
2 | def up | ||
3 | change_table :pokeviewer_revisions do |t| | ||
4 | t.references :species, null: true | ||
5 | end | ||
6 | |||
7 | Pokeviewer::Revision.all.each do |r| | ||
8 | r.species_id = r.pokemon.species_id | ||
9 | r.save! | ||
10 | end | ||
11 | |||
12 | remove_column :pokeviewer_pokemon, :species_id | ||
13 | |||
14 | change_column_null :pokeviewer_revisions, :species_id, false | ||
15 | |||
16 | add_foreign_key :pokeviewer_revisions, :pokeviewer_species, | ||
17 | column: :species_id | ||
18 | end | ||
19 | |||
20 | def down | ||
21 | def up | ||
22 | change_table :pokeviewer_pokemon do |t| | ||
23 | t.references :species, null: true | ||
24 | end | ||
25 | |||
26 | Pokeviewer::Pokemon.all.each do |p| | ||
27 | p.species_id = p.revisions.first.species_id | ||
28 | p.save! | ||
29 | end | ||
30 | |||
31 | remove_column :pokeviewer_revisions, :species_id | ||
32 | |||
33 | change_column_null :pokeviewer_pokemon, :species_id, false | ||
34 | |||
35 | add_foreign_key :pokeviewer_pokemon, :pokeviewer_species, | ||
36 | column: :species_id | ||
37 | end | ||
38 | end | ||
39 | end | ||
diff --git a/test/dummy/db/schema.rb b/test/dummy/db/schema.rb index a527d06..9752892 100644 --- a/test/dummy/db/schema.rb +++ b/test/dummy/db/schema.rb | |||
@@ -10,7 +10,7 @@ | |||
10 | # | 10 | # |
11 | # It's strongly recommended that you check this file into your version control system. | 11 | # It's strongly recommended that you check this file into your version control system. |
12 | 12 | ||
13 | ActiveRecord::Schema.define(version: 20171011015648) do | 13 | ActiveRecord::Schema.define(version: 20180113200119) do |
14 | 14 | ||
15 | create_table "pokeviewer_abilities", force: :cascade do |t| | 15 | create_table "pokeviewer_abilities", force: :cascade do |t| |
16 | t.string "name", limit: 191, null: false | 16 | t.string "name", limit: 191, null: false |
@@ -58,7 +58,6 @@ ActiveRecord::Schema.define(version: 20171011015648) do | |||
58 | 58 | ||
59 | create_table "pokeviewer_pokemon", force: :cascade do |t| | 59 | create_table "pokeviewer_pokemon", force: :cascade do |t| |
60 | t.string "uuid", limit: 191, null: false | 60 | t.string "uuid", limit: 191, null: false |
61 | t.integer "species_id", null: false | ||
62 | t.integer "trainer_id" | 61 | t.integer "trainer_id" |
63 | t.string "key", limit: 191 | 62 | t.string "key", limit: 191 |
64 | t.string "ot_name", null: false | 63 | t.string "ot_name", null: false |
@@ -78,7 +77,6 @@ ActiveRecord::Schema.define(version: 20171011015648) do | |||
78 | t.integer "location_id" | 77 | t.integer "location_id" |
79 | t.string "pokeball", null: false | 78 | t.string "pokeball", null: false |
80 | t.index ["key"], name: "index_pokeviewer_pokemon_on_key", unique: true | 79 | t.index ["key"], name: "index_pokeviewer_pokemon_on_key", unique: true |
81 | t.index ["species_id"], name: "index_pokeviewer_pokemon_on_species_id" | ||
82 | t.index ["trainer_id"], name: "index_pokeviewer_pokemon_on_trainer_id" | 80 | t.index ["trainer_id"], name: "index_pokeviewer_pokemon_on_trainer_id" |
83 | t.index ["uuid"], name: "index_pokeviewer_pokemon_on_uuid", unique: true | 81 | t.index ["uuid"], name: "index_pokeviewer_pokemon_on_uuid", unique: true |
84 | end | 82 | end |
@@ -129,12 +127,14 @@ ActiveRecord::Schema.define(version: 20171011015648) do | |||
129 | t.boolean "national_ribbon", default: false | 127 | t.boolean "national_ribbon", default: false |
130 | t.boolean "earth_ribbon", default: false | 128 | t.boolean "earth_ribbon", default: false |
131 | t.boolean "world_ribbon", default: false | 129 | t.boolean "world_ribbon", default: false |
130 | t.integer "species_id", null: false | ||
132 | t.index ["move_1_id"], name: "index_pokeviewer_revisions_on_move_1_id" | 131 | t.index ["move_1_id"], name: "index_pokeviewer_revisions_on_move_1_id" |
133 | t.index ["move_2_id"], name: "index_pokeviewer_revisions_on_move_2_id" | 132 | t.index ["move_2_id"], name: "index_pokeviewer_revisions_on_move_2_id" |
134 | t.index ["move_3_id"], name: "index_pokeviewer_revisions_on_move_3_id" | 133 | t.index ["move_3_id"], name: "index_pokeviewer_revisions_on_move_3_id" |
135 | t.index ["move_4_id"], name: "index_pokeviewer_revisions_on_move_4_id" | 134 | t.index ["move_4_id"], name: "index_pokeviewer_revisions_on_move_4_id" |
136 | t.index ["pokemon_id", "sequential_id"], name: "index_pokeviewer_revisions_on_pokemon_id_and_sequential_id", unique: true | 135 | t.index ["pokemon_id", "sequential_id"], name: "index_pokeviewer_revisions_on_pokemon_id_and_sequential_id", unique: true |
137 | t.index ["pokemon_id"], name: "index_pokeviewer_revisions_on_pokemon_id" | 136 | t.index ["pokemon_id"], name: "index_pokeviewer_revisions_on_pokemon_id" |
137 | t.index ["species_id"], name: "index_pokeviewer_revisions_on_species_id" | ||
138 | end | 138 | end |
139 | 139 | ||
140 | create_table "pokeviewer_species", force: :cascade do |t| | 140 | create_table "pokeviewer_species", force: :cascade do |t| |