Corrigé du TP3 / 4 / Début du 5 - Regarder commit par commit
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Karim Bogtob eb3d317a5c
2.6C - Mettre a jour les vieilles creatures
2 years ago
app 2.6B - Setter la size a la creation 2 years ago
bin Initial commit 2 years ago
config 2.5 - Supprimer une creature 2 years ago
db 2.6C - Mettre a jour les vieilles creatures 2 years ago
lib Initial commit 2 years ago
log Initial commit 2 years ago
public Initial commit 2 years ago
storage Initial commit 2 years ago
test Question 3 - Creer une creature 2 years ago
tmp Initial commit 2 years ago
vendor Initial commit 2 years ago
.gitattributes Initial commit 2 years ago
.gitignore Initial commit 2 years ago
.ruby-version Initial commit 2 years ago
Gemfile Question 3.2 - Peupler la base 2 years ago
Gemfile.lock Question 3.2 - Peupler la base 2 years ago
README.md 2.6C - Mettre a jour les vieilles creatures 2 years ago
Rakefile Initial commit 2 years ago
config.ru Initial commit 2 years ago

README.md

README

Commandes lancées :

Question 2.2 :

  • rails server

Question 2.3 :

  • rails generate controller HomeController

Question 3 :

  • rails generate model Creature name:string health_points:integer
  • La migration n'est pas lancée sur la base
  • rails db:migrate

Question 3.1 :

Je teste la creature dans une console rails que je lance avec rails console :

 rails console
Loading development environment (Rails 7.0.4.3)
irb(main):001:0> c = Creature.create(name: "Thrall", health_points: 489)
  TRANSACTION (0.1ms)  begin transaction
  Creature Create (0.4ms)  INSERT INTO "creatures" ("name", "health_points", "created_at", "updated_at") VALUES (?, ?, ?, ?)  [["name", "Thrall"], ["health_points", 489], ["created_at", "2023-03-26 13:19:57.492017"], ["updated_at", "2023-03-26 13:19:57.492017"]]
  TRANSACTION (0.9ms)  commit transaction
=>
#<Creature:0x00000001070374f8
...
irb(main):002:0> c.to_label
=> "Thrall (489)"

Question 3.2 :

  • bundle add random_name_generator pour ajouter la gemme au gemfile, effectuer la résolution de dépendance et installer la nouvelle gemme

  • rails db:seed

TP4

Question 2.5 :

  • J'ajoute une créature avec des PVs à 0 :
 rails console
Loading development environment (Rails 7.0.4.3)
irb(main):001:0> Creature.create(name: 'Zombie', health_points: 0)
  TRANSACTION (0.1ms)  begin transaction
  Creature Create (0.4ms)  INSERT INTO "creatures" ("name", "health_points", "created_at", "updated_at") VALUES (?, ?, ?, ?)  [["name", "Zombie"], ["health_points", 0], ["created_at", "2023-03-26 14:00:56.413028"], ["updated_at", "2023-03-26 14:00:56.413028"]]
  TRANSACTION (0.9ms)  commit transaction
=>
#<Creature:0x00000001104b9310
 id: 27,
 name: "Zombie",
 health_points: 0,
 created_at: Sun, 26 Mar 2023 14:00:56.413028000 UTC +00:00,
 updated_at: Sun, 26 Mar 2023 14:00:56.413028000 UTC +00:00>
  • J'essaie de renommer la créature dans postman et je vérifie que son nom ne change pas

  • J'ai bien une 404 et son nom n'a pas changé

Question 2.6 :

  • Je génère la migration avec rails g migration AddSizeColumnToCreatures size:integer

  • rails db:migrate

  • J'ajoute le callback comme dans le sujet du TP pour setter la size à la création, je teste en console :

irb(main):001:0> Creature.create(name: 'Big Chongus', health_points: 25)
  TRANSACTION (0.1ms)  begin transaction
  Creature Create (0.4ms)  INSERT INTO "creatures" ("name", "health_points", "created_at", "updated_at", "size") VALUES (?, ?, ?, ?, ?)  [["name", "Big Chongus"], ["health_points", 35], ["created_at", "2023-03-26 14:07:03.876318"], ["updated_at", "2023-03-26 14:07:03.876318"], ["size", 2]]
  TRANSACTION (0.6ms)  commit transaction
=>
#<Creature:0x0000000109a96d70
 id: 28,
 name: "Big Chongus",
 health_points: 25,
 created_at: Sun, 26 Mar 2023 14:07:03.876318000 UTC +00:00,
 updated_at: Sun, 26 Mar 2023 14:07:03.876318000 UTC +00:00,
 size: "big">

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 :

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">