-
Notifications
You must be signed in to change notification settings - Fork 0
2. CRUD de Boards
El objetivo de esta parte es poder crear y listar boards.
Corremos el siguiente comando para generar todo lo relacionado con boards.
$ rails generate scaffold board name
invoke active_record
create db/migrate/20180504231029_create_boards.rb
create app/models/board.rb
invoke test_unit
create test/models/board_test.rb
create test/fixtures/boards.yml
invoke resource_route
route resources :boards
invoke scaffold_controller
create app/controllers/boards_controller.rb
invoke test_unit
create test/controllers/boards_controller_test.rb
Probemos obtener la lista de boards usando Postman. Si hacemos una solicitud a GET http://localhost:3000/boards
vemos que nos devuelve un error con un mensaje que dice Migrations are pending
.
Esto es porque todavía no creamos la tabla boards
en la base de datos.
Corremos las migraciones pendientes.
$ rails db:migrate
== 20180504231029 CreateBoards: migrating =====================================
-- create_table(:boards)
-> 0.0291s
== 20180504231029 CreateBoards: migrated (0.0293s) ============================
Ahora podemos hacer el mismo request GET a http://localhost:3000/boards
y comprobar que se solucionó el error y que nos devuelve una lista vacía de boards.
Para crear un nuevo board, usamos la misma URL pero con el método POST y el siguiente body:
{
"name": "Super Board"
}
Notar que se debe agregar un header con clave Content-Type
y valor application/json
.
Verificar que dentro de la pestaña Body raw
es la vista seleccionada.
En caso de no tener instalado Postman, podemos usar el comando curl
desde la terminal.
curl -i -X POST -H "Content-Type:application/json" http://localhost:3000/boards -d '{"name": "Super Board"}'
Corremos los tests generados por el scaffold.
$ rails test
Run options: --seed 5939
# Running:
.......
Finished in 0.398575s, 12.5447 runs/s, 17.5626 assertions/s.
5 runs, 7 assertions, 0 failures, 0 errors, 0 skips
El scaffold nos generó este archivo de rutas, donde están definidas las rutas asociadas a boards.
# config/routes.rb
Rails.application.routes.draw do
resources :boards
end
Con este comando podemos ver las rutas que se generaron:
$ rails routes
Prefix Verb URI Pattern Controller#Action
boards GET /boards(.:format) boards#index
POST /boards(.:format) boards#create
board GET /boards/:id(.:format) boards#show
PATCH /boards/:id(.:format) boards#update
PUT /boards/:id(.:format) boards#update
DELETE /boards/:id(.:format) boards#destroy
...
git add -A
git commit -m "CRUD de Boards"
Si se necesita "ponerse al día" con los pasos hasta este punto ejecutar los siguientes comandos:
# Agregar el remote si no se hizo antes
git remote add origin https://github.com/wyeworks/rails-workshop-2018.git
git fetch origin
git reset --hard 881fc4a