2.6C - Mettre a jour les vieilles creatures

pull/1/head
Karim Bogtob 2 years ago
parent 4ec1c1ce26
commit eb3d317a5c

@ -91,4 +91,23 @@ irb(main):001:0> Creature.create(name: 'Big Chongus', health_points: 25)
Toutes les créatures crées auront dorénavant une taille.
Maintenant il faut faire une migration pour mettre à jour celles en base.
* `rails g migration SetSizeOnCreatures`
* Après avoir écrit la mise à jour, j'applique avec : `rails db:migrate`
* Je teste en console en regardant une vieille créature :
```ruby
irb(main):012:0> Creature.first
Creature Load (0.5ms) SELECT "creatures".* FROM "creatures" ORDER BY "creatures"."id" ASC LIMIT ? [["LIMIT", 1]]
=>
#<Creature:0x0000000138c856e8
id: 1,
name: "Thrall",
health_points: 489,
created_at: Sun, 26 Mar 2023 13:19:57.492017000 UTC +00:00,
updated_at: Sun, 26 Mar 2023 14:11:33.479248000 UTC +00:00,
size: "giant">
```

@ -0,0 +1,15 @@
class SetSizeOnCreatures < ActiveRecord::Migration[7.0]
def change
Creature.all.each do |creature|
creature.size = case creature.health_points
when 0..10
:small
when 11..30
:big
else
:giant
end
creature.save!
end
end
end

2
db/schema.rb generated

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.0].define(version: 2023_03_26_140343) do
ActiveRecord::Schema[7.0].define(version: 2023_03_26_140943) do
create_table "creatures", force: :cascade do |t|
t.string "name"
t.integer "health_points"

Loading…
Cancel
Save