Mi guía básica de Rails: CRUD


Golden WhiskersCon esta guía básica de Rails quiero repasar, resumir conceptos básicos necesarios y que sirva de base para aquellos que quieran adentrarse en el mundo Rails. Comenzamos viendo qué es el concepto de CRUD.

Imagínate que primeramente tenemos una única tabla en la que vamos a guardar nuestros posts, esta tabla dispone de una serie de campos para definir qué y cómo vamos a almacenar dichos posts, el id para identificar únicamente a un post, el post que escribimos y el user de quién lo ha escrito. Pero como toda la tabla está dividida en filas y columnas, de las que cuando necesitemos recuperar un registro completo, hablaremos de filas en nuestro caso recuperaremos una Hash (ahora lo vemos) y cuando hagamos referencia a algún dato concreto, necesitamos saber el nombre de la columna que está situada en la parte superior, como el name, id, post o los campos de nuestra tabla.

Por ejemplo si queremos recuperar una fila con el identificador id 21 lo recuperamos en una hash:

post = { :post => “This is my 21 post”:user => “Carlos Sánchez Pérez” }

Pero una hash ¿qué es?. Una Hash es una serie de clave, valor. Para recuperar un dato podemos poner: puts post[:post] y nos devuelve en pantalla “This is my 21 post” y si ponemos puts post[:user] obtenemos “Carlos Sánchez Pérez”.

Para las versiones de Ruby 1.9 podemos hacer:

post = { post: “This is my 21 post”, user: “Carlos Sánchez Pérez” }

Lo que hemos cambiado ha sido  :post =>  por esta otra forma post: . Si ahora queremos buscar un registro en nuestra tabla de post con un id que sea igual a 10, lo que tendremos que hacer es lo siguiente:

post = Post.find(10)

Esta sentencia nos va realizar que el resultado lo almacene en una variable llamada post para poder acceder después a los datos de la forma post.name, Post es nuestro modelo Rails y find es un método de Rails que nos facilita la sentencia SQL sin necesidad de poner nosotros nada de select * from posts where….. y el 10 es el ID que queremos localizar en la tabla de posts, por tanto devuelve un resultado (suponemos que existe en la Base de Datos claro está) y podemos acceder a los datos mediante post[:id] o de la forma post.id. Ahora una aclaración importante para no llevarte a confusiones, cuanto hablamos de los nombres de las tablas en base de datos, estamos hablando que el nombre al que nos referimos de nuestra tabla, se llama posts (en plural) y cuando estemos en Rails para hacer referencia a esa misma tabla de posts, lo haremos a través del modelo que se llama Post (primera en mayúsculas y en singular).

Entonces, ¿qué significa CRUD? son las siglas de las acciones de Create, Read, Update y Delete.

Create: 

u = User.new
u.status = “I’m alive.”
u.save

Read:

User.find(34) devuelve un único registro si existe

User.find(2, 4, 6)

User.first

User.last

User.limit(20)

User.count

User.order(:name)

User.where(:name => “carlos”)

User.where(:name => “carlos”).order(:name).limit(10)

Update:

u = User.find(34)
u.status = “I love Rails”
u.save

u = User.find(34)
u.attributes = {
               :status => “Can I help you?”,
               :name => “Carlos”
}
u.save

u = User.find(34)
u.update_attributes(
               :status => “Can I help you?”,
               :name => “Carlos”
)

Delete:

u = User.find(34)
u.destroy

User.find(34).destroy

User.destroy_all

Una puntualización interesante es, que los ID no son necesarios que los tengas en cuenta, Rails se encarga de gestionarlos. Por ejemplo si hacemos:

u = User.new
u.status = “I’m alive.”
u.save

o alternativas como:

1) User.create(:status => “I love Rails“, :name => “Carlos”) 

2) u = User.new(:status => “I love Rails“, :name => “Carlos”)
    u.save

Lo siguiente que veremos serán lo modelos….

Un comentario en “Mi guía básica de Rails: CRUD

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s