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