|
|
|
@ -138,3 +138,70 @@ Il va falloir préciser vers quelle table doit pointer la foreign key, pour ça
|
|
|
|
|
|
|
|
|
|
On remplacera aussi le `null: false` de la référence `winner` pour supporter de ne pas en avoir.
|
|
|
|
|
|
|
|
|
|
Question 3.1 :
|
|
|
|
|
|
|
|
|
|
On ajoute la méthode baston! sur les combats et on teste en console. La méthode modifie les instances de créature mais ne sauvegarde pas.
|
|
|
|
|
|
|
|
|
|
Pour une domination :
|
|
|
|
|
|
|
|
|
|
```ruby
|
|
|
|
|
❯ rails console
|
|
|
|
|
Loading development environment (Rails 7.0.4.3)
|
|
|
|
|
irb(main):001:0> c1 = Creature.first
|
|
|
|
|
...
|
|
|
|
|
irb(main):003:0> c1.to_label
|
|
|
|
|
=> "Thrall (489)"
|
|
|
|
|
irb(main):004:0> c2 = Creature.last
|
|
|
|
|
...
|
|
|
|
|
irb(main):005:0> c2.to_label
|
|
|
|
|
=> "Big Chongus (35)"
|
|
|
|
|
irb(main):006:0> combat = Combat.new(name: "L'orc vs le lapin", left_fighter: c1, right_fighter: c2)
|
|
|
|
|
=> #<Combat:0x0000000111817d58 id: nil, result: nil, name: "L'orc vs le lapin", left_fighter_id: 1, right_fighter_id: 28, winner_id: nil, created_at: nil, updated_at: nil>
|
|
|
|
|
irb(main):007:0> combat.baston!
|
|
|
|
|
=> :domination
|
|
|
|
|
irb(main):008:0> combat.winner
|
|
|
|
|
=>
|
|
|
|
|
#<Creature:0x00000001274b5e60
|
|
|
|
|
id: 1,
|
|
|
|
|
name: "Thrall",
|
|
|
|
|
health_points: 454,
|
|
|
|
|
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">
|
|
|
|
|
irb(main):009:0> combat.right_fighter
|
|
|
|
|
=>
|
|
|
|
|
#<Creature:0x00000001274bffa0
|
|
|
|
|
id: 28,
|
|
|
|
|
name: "Big Chongus",
|
|
|
|
|
health_points: 0,
|
|
|
|
|
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: "giant">
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Pour un draw :
|
|
|
|
|
|
|
|
|
|
```ruby
|
|
|
|
|
irb(main):011:0> c2.reload # permet de recharger le record depuis la base
|
|
|
|
|
...
|
|
|
|
|
=>
|
|
|
|
|
#<Creature:0x00000001274bffa0
|
|
|
|
|
id: 28,
|
|
|
|
|
name: "Big Chongus",
|
|
|
|
|
health_points: 35,
|
|
|
|
|
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: "giant">
|
|
|
|
|
irb(main):012:0> c3 = Creature.create!(name: "Big Chungus", health_points: 35)
|
|
|
|
|
...
|
|
|
|
|
irb(main):013:0> combat2 = Combat.new(name: "Le fake vs le vrai", left_fighter: c2, right_fighter: c3)
|
|
|
|
|
=> #<Combat:0x00000001077212a0 id: nil, result: nil, name: "Le fake vs le vrai", left_fighter_id: 28, right_fighter_id: 29, winner_id: nil, created_at: nil, updated_at: ...
|
|
|
|
|
irb(main):014:0> combat2.baston!
|
|
|
|
|
=> :draw
|
|
|
|
|
irb(main):015:0> combat2.winner
|
|
|
|
|
=> nil
|
|
|
|
|
irb(main):016:0> c2.to_label
|
|
|
|
|
=> "Big Chongus (0)"
|
|
|
|
|
irb(main):017:0> c3.to_label
|
|
|
|
|
=> "Big Chungus (0)"
|
|
|
|
|
```
|
|
|
|
|