Creando una sencilla Plataforma de Blogs--El Modelo

Por:, en:

ES:This tutorial assumes you have already completed:

  1. Install Ruby on Rails
  2. Create a Ruby on Rails application
  3. Create Static Pages - without this deploy will not work
  4. Install Git
  5. Create a remote Git Repository - optional but recommended
  6. Deploy application to Heroku
  7. Manage users with Devise
  8. How to add Twitter Bootstrap to a Ruby on Rails application - Advised

Vamos a hacer que nuestro sitio web haga algo útil. ¿Qué les parece una plataforma de blogs donde los usuarios puedan compartir sus historias? Nuestra nueva aplicación web tendrá las siguientes características:

  •  Todos los usuarios pueden crear, editar y eliminar sus propios blogs
  •  Todos los usuarios pueden leer  las publicaciones de los otros usuarios

Paso 1: Crea el modelo "Post" en la Terminal

Vamos a empezar por crear un nuevo modelo para nuestras publicaciones. Abre tu terminal y ve a tu aplicación. Asegúrate de escribir “Post” en una forma singular (sin la letra “s” al final) y con la primera letra mayúscula. Es una convención de Rails.

bash


cd documents/projects/demo
$ rails generate model Post title:string body:text


invoke  active_record
create    db/migrate/20140507054439_create_posts.rb
create    app/models/post.rb
invoke    test_unit
create      test/models/post_test.rb
create      test/fixtures/posts.yml

Paso 2: Abre el  Archivo de migración

Igual que cuando generamos el modelo con Devise para nuestros usuarios,  también hemos generado otros archivos: los archivos de migración, modelo y prueba. Abramos migración primero.

db/migrate/20140507054439_create_posts.rb


class CreatePosts < ActiveRecord::Migration
  def change
    create_table :posts do |t|
      t.string :title
      t.text :body

      t.timestamps
    end
  end
end

Este archivo de migración se puede utilizar para crear una nueva tabla en la base de datos para mantener los blogs. Piensa en ello como una hoja de cálculo que tendrá filas y columnas. Cada fila contiene información sobre una publicación y cada columna contiene un tipo de información diferente acerca de nuestra publicación. Cada publicación tendrá un título que aceptará el tipo de datos de un “string” o cadena de caracteres (que no tengan demasiados caracteres y que sea como una oración en cualquier idioma). Y en el cuerpo se aceptara el tipo de datos de un "text" (posiblemente un fragmento de texto que no esté muy largo). Rails también creará dos columnas  created_at y updated_atcon la linea t.timestamps.

      id  |  title  |  body  |  created_at  |  updated_at
    -------------------------------------------------------
          |         |        |              |

Antes de migrar la base de datos, aun se pueden hacer  cambios en este archivo. Podemos agregar, cambiar el nombre y eliminar campos. Después de que migramos la base de datos - ya NO podremos. Para cambiar la base de datos después de la migración, necesitaremos crear un nuevo archivo de migración, de lo contrario nos estamos buscando problemas.

Paso 3: Abre el archivo Post Model

El segundo archivo es el modelo de publicación:

app/models/post.rb


class Post < ActiveRecord::Base
end

Por el momento sólo tenemos líneas de apertura y cierre sin código personalizado en el medio. Pronto, regresaremos a este archivo.

Paso 4: Ejecuta “Migrate”

Por ahora, vamos a migrar la base de datos. En la ventana de la terminal:

bash


$ rake db:migrate

== 20140507054439 CreatePosts: migrating ======================================
-- create_table(:posts)
   -> 0.0054s
== 20140507054439 CreatePosts: migrated (0.0055s) =============================

Ahora, nuestra aplicación tiene la capacidad de crear blogs y almacenarlos en la base de datos. Para ver cómo funciona, ya que no tenemos ninguna interfaz de usuario, vamos a interactuar con la aplicación a través de la consola. Abre una nueva ventana en la terminal, ve a tu aplicación y ejecuta este comando:

bash


$ rails console

Loading development environment (Rails 4.1.0)
2.1.1 :001 >

">" Indica que estamos ejecutando la consola de Rails. Si intentas escribir los comandos aquí – no funcionara. Para salir de la consola, escribe "exit" o presiona "control + d" en tu teclado.

Paso 5: Crea un “Post”

Ejecuta algo de código en la línea de comandos:

bash


2.1.1 :001 > post = Post.new(title: "The first post ever", body: "Lorem ipsum dolor sit amet")

 => #<Post id: nil, title: "The first post ever", body: "Lorem ipsum dolor sit amet", created_at: nil, updated_at: nil>

Acabamos de crear un nueva variable llamada "post”  y fue asignada  con "=" una nueva instancia del Post. Post.new () – Este crea un nuevo objeto en la memoria. Podemos pasar los parámetros dentro de los paréntesis, que se utilizarán para montar un nuevo récord. Observa que "title" y "body" coinciden con los nombres de los campos que hemos implantado al crear el modelo.

Paso 6: Guarda el “Post”

Además, se puede ver que el modelo que acabamos de crear no tiene un ID. Cuando pedimos post.id, obtenemos un valor nill (nulo). En nuestra base de datos, cada registro tendrá siempre una ID – se crea automáticamente un identificador único. En este momento, la ficha tiene un ID vacío porque aún no se ha guardado. El  método "new" sólo crea un registro en la memoria y no intenta guardarlo, por lo tanto, ID no está asignado.


2.1.1 :002 > post.id

=> nil

Guardémoslo:


2.1.1 :003 > post.save

(0.3ms)  begin transaction
SQL (0.5ms)  INSERT INTO "posts" ("body", "created_at", "title", "updated_at") VALUES (?, ?, ?, ?)  [["body", "Lorem ipsum dolor sit amet"], ["created_at", "2014-05-07 06:44:22.227792"], ["title", "The first post ever"], ["updated_at", "2014-05-07 06:44:22.227792"]]
(0.7ms)  commit transaction
=> true

Paso 7: Comprueba el ID

Ahora, comprueba si el ID está asignado:


2.1.1 :004 > post.id
 => 1

Paso 8: Crea un nuevo “Post”

Vamos a crear otra nueva publicación:


2.1.1 :005 > new_post = Post.new(title: "Second post", body: "Lorem Ipsum Dolor Sit Amet")
2.1.1 :005 > new_post.save


2.1.1 :005 > Post.count
 => 2

Ahora tenemos un par de registros en la base de datos. Vamos a construir una interfaz de usuario para mostrar las publicaciones.

 

Si tu Inicio de sesión serás capaz de marcar esto tutorial Como vas avanzando tu progreso



Comentarios

  • en: Frank escribió:

    Done! Syntax matters here. Thanks for the help.
  • en: Frank escribió:

    Solid, thanks! Syntax matters here, I had some trial and error.

Comentar

Tú puedes Inicio de sesión Comentar