Skip to content
This repository has been archived by the owner on Jun 7, 2019. It is now read-only.

2. CRUD de Boards

Ignacio Aguirrezabal edited this page Jun 5, 2018 · 13 revisions

CRUD de Boards

El objetivo de esta parte es poder crear y listar boards.

1. Scaffold

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.

2. Migraciones

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

3. Tests

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

4. Rutas

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

5. Commit en Git

git add -A
git commit -m "CRUD de Boards"

Check Point

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

Siguiente: 3. Validaciones