From eb3d317a5c8d2d93035504b4de2b13b7c9188f7a Mon Sep 17 00:00:00 2001 From: Karim Bogtob Date: Sun, 26 Mar 2023 16:12:58 +0200 Subject: [PATCH] 2.6C - Mettre a jour les vieilles creatures --- README.md | 19 +++++++++++++++++++ .../20230326140943_set_size_on_creatures.rb | 15 +++++++++++++++ db/schema.rb | 2 +- 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20230326140943_set_size_on_creatures.rb diff --git a/README.md b/README.md index fc9b6b6..bca034a 100644 --- a/README.md +++ b/README.md @@ -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]] +=> +# +``` \ No newline at end of file diff --git a/db/migrate/20230326140943_set_size_on_creatures.rb b/db/migrate/20230326140943_set_size_on_creatures.rb new file mode 100644 index 0000000..0e7ceb6 --- /dev/null +++ b/db/migrate/20230326140943_set_size_on_creatures.rb @@ -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 diff --git a/db/schema.rb b/db/schema.rb index b9099e8..4104bde 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -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"