Creando una sencilla Plataforma de Blogs--El Modelo
Por: Lukasz Muzyka, en:
ES:This tutorial assumes you have already completed:
- Install Ruby on Rails
- Create a Ruby on Rails application
- Create Static Pages - without this deploy will not work
- Install Git
- Create a remote Git Repository - optional but recommended
- Deploy application to Heroku
- Manage users with Devise
- 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_at
con 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.
Comentarios
Comentar
Tú puedes Inicio de sesión Comentar
en: Frank escribió:
en: Frank escribió: