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.
83 lines
2.0 KiB
83 lines
2.0 KiB
--
|
|
layout: post
|
|
title: "TP4 de web ruby - Gladiator"
|
|
categories: ruby-2a
|
|
---
|
|
|
|
# Gladiator
|
|
|
|
Ce TP a pour but de vous faire créer une API JSON Rails et de vous familiariser avec :
|
|
|
|
* La gestion des paramètres (`params`)
|
|
* La découverte d'un nouveau concept de `params` validé : les `StrongParams`
|
|
* Pratiquer les migrations
|
|
* Utiliser des scopes
|
|
* Comment écrire une API avec Rails
|
|
|
|
## Repartir du TP précédent ou repartir de zéro
|
|
|
|
Vous pouvez repartir du TP précédent, c'est du travail de gagné sur ce TP et vous pourrez modifier la vue du welcome (`/`) pour ajouter du détail sur les créatures au fur et à mesure.
|
|
|
|
Pensez à modifier `to_label` si c'est le cas.
|
|
|
|
Si vous repartez de zéro, n'oubliez pas d'ajouter le modèle créature avec les commande suivantes :
|
|
|
|
```ruby
|
|
rails g model Creature name:string health_points:integer
|
|
rails db:migrate
|
|
```
|
|
|
|
## Params, où sont mes params ?
|
|
|
|
1. Rappel sur les params
|
|
|
|
2. Rappel API JSON
|
|
|
|
3. Explications des strong params
|
|
|
|
## Fais rouler les dés
|
|
|
|
Contrôleur DiceRollsController
|
|
|
|
Créer un diceroll => Ça retourne les jetés de dés, on peut lancer qu'un d2, d4, d6, d8, d10, d20, d100
|
|
ça retourne le jet de dés (paramètre facultatif pour le nombre de lancer)
|
|
|
|
`$render $params`
|
|
|
|
## Ajout d'un CRUD de créature
|
|
|
|
### CRUD
|
|
|
|
`$strong_params`
|
|
|
|
On supportera uniquement le renommage
|
|
|
|
### Scoping aux créatures vivantes
|
|
|
|
nommer le scope `encore_vivants` en se basant sur pv > 0
|
|
|
|
Supporter le renommage que des créatures vivantes
|
|
|
|
### Ajout d'un enum vivant
|
|
|
|
migration + màj des données
|
|
|
|
nommer l'enum status
|
|
|
|
utiliser le scope `alives`
|
|
|
|
## Ajout d'une nouvelle ressource Combat
|
|
|
|
Ajouter une ressource combat où on fait combattre deux créatures
|
|
|
|
pour le combat, les créatures se soutraient mutuellement leurs PVs 1 fois
|
|
|
|
foreign_key `winner_id`, `loser_id`
|
|
|
|
le résultat du combat doit être écrit dans la resource combat (death ou draw, utiliser un enum)
|
|
|
|
FK, index, s'assurer qu'une créature ne se combat pas elle même
|
|
|
|
## Rechercher des combats
|
|
|
|
On veut pouvoir rechercher un combat par nom de créature et par résultat. |