Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Construye los primeros scaffolds del proyecto

20/36
Recursos

Aportes 21

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Si el commando annotate --models les genera el siguiente error:

Trying to register Bundler::GemfileError for status code 4 but Bundler::GemfileError is already registered (ArgumentError)

Hagan el siguiente comando.

bundle exec annotate --models

Para los que estan en windows tienen que hacer lo siguiente:

  1. Descargar Postgres Aqui

  2. Hacer todas las instalaciones aquí les dejo un video donde instalan postgres deben instalar los complementos de Web development Instalación

  3. Crear la base de datos con de development y de test en pgAdmin

  4. Colocar los datos correspondientes a ambas bases de datos en el archivo database.yml

Aqui les dejo un video resumido:

al momento de generar las migraciones ya sea usando postgres o mysql, es necesario crear la base de datos antes que las migraciones?

Tuve errores al intentar generar la base de datos, use el siguiente tutorial, de DigitalOcean:

https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-ruby-on-rails-application-on-ubuntu-18-04

Estos son los comandos utilizados en la clase

g simple_form:install --bootstrap
rails g scaffold Category name:string description:text
rails g scaffold Task name:string description:text due_date:date category:references

Me sale esto cuando pongo annotate --models

Usage: annotate imagein.jpg imageout.jpg

Standard input should consist of
lines in the following formats:
color r g b (0-255 each) [a (0-127, 0 is opaque)]
font fontname
size pointsize
align (left|right|center)
move x y
text actual-output-text

If the file 'paris.ttf' exists in /usr/share/fonts/truetype or in a
location specified in the GDFONTPATH environment variable, 'font paris' is
sufficient. You may also specify the full, rooted path of a font file.

si se equivocan usando el scaffold pueden usar el mismo comando con los cambios que requieran añadiendo al final --force para reescribir los archivos generados por el comando

Al ejectutar el comando rails db:migrate me arroja el siguiente error. Alguien me puede ayudar?

rails aborted!
ActiveRecord::NoDatabaseError: FATAL: no existe la base de datos «proyectorganizador_development»
/home/mateo/coding/platzi/proyectorganizador/bin/rails:9:in <top (required)>' /home/mateo/coding/platzi/proyectorganizador/bin/spring:15:in<top (required)>‘
bin/rails:3:in load' bin/rails:3:in<main>’

Caused by:
PG::ConnectionBad: FATAL: no existe la base de datos «proyectorganizador_development»
/home/mateo/coding/platzi/proyectorganizador/bin/rails:9:in <top (required)>' /home/mateo/coding/platzi/proyectorganizador/bin/spring:15:in<top (required)>'
bin/rails:3:in load' bin/rails:3:in<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

IMPORTANTE: Si al momento de ejecutar el comando rails db:migrate te marca el error “ActiveRecord::NoDatabaseError: FATAL: database “organizador_development” does not exist”

Se arregla ejecutando antes el comando:

rails db:create

y en seguida ahora sí ejecutar rails db:migrate

o si te quieres ahorrar ambos pasos, ejecutas

rails db:setup

Espero que les sirva este tip! 😉

Por si les sale este problema al generar los annotate para los modelos.

annotate --models
Usage: annotate imagein.jpg imageout.jpg

Standard input should consist of
lines in the following formats:
color r g b (0-255 each) [a (0-127, 0 is opaque)]
font fontname
size pointsize
align (left|right|center)
move x y
text actual-output-text

If the file 'paris.ttf' exists in /usr/share/fonts/truetype or in a
location specified in the GDFONTPATH environment variable, 'font paris' is
sufficient. You may also specify the full, rooted path of a font file.

ejecutar nuevamente desde el terminal de la siguiente manera.

bundle exec annotate --models

Si les sale error cuando hacen

rails g simple_form:install --bootstrap 

es por que primero se tiene que generar la base de datos

rails db:create

ahora si vuelvan a generar para evitar el error caso contrario a seguir buscando la solución

Johan asume que ya tenemos una base de datos creada, en mi caso no lo fue asi asi que para ubuntu 20.04 este recurso me salvo

Error Can not connect to postgresql listening on port 5432
Primero editan el archivo de configuración dependiendo la versión de postgres que instalaron en donde 12 es la versión que instale yo:

sudo nano /etc/postgresql/12/main/postgresql.conf

Después habilitan o agregan:

listen_addresses = '*'

Guardan y salen.

Antes de construir los scaffolds hay que instalar el simple_form y hacer que las plantillas de HTML y HAML se enlacen con Bootstrap con el comando rails g simple_form:install --bootstrap.

El primer scaffold será categoría, porque una tarea pertenece a una categoría, esto quiere decir que el registro independiente es categoría y debe ser creado primero para después poder enlazarlo con Task. Comando: rails g scaffold Category name:string description:string.

El siguiente scaffold será Task. Comando: rails g scaffold Task name:string description:text due_date:date category:references. Como se acordó, una tarea pertenece a una categoría por lo que la tarea debe tener un campo para referenciar a qué categoría pertenece, este campo es de un tipo especial llamado references.


Configurar PostgreSQL

Para configurar la aplicación para que pueda conectarse correctamente a la base de datos hay que especificar algunas credenciales, ya que ahora no está trabajando con SQLite.

Esto se hace en el archivo config>database.yml, tanto en la sección de desarrollo como en la de testing. Por defecto ya viene el nombre de la base de datos, solo hay que agregar debajo el host, el usuario y la contraseña con el que se realizará la conexión.

Migración

Para poder hacer la migración primero hay que ejecutar el comando rails db:create para que Rails cree automáticamente la base de datos, otra opción es crear la base de datos de forma manual desde Postgres.

Una vez hecho esto ahora sí es posible realizar la migración sin problemas con el comando rails db:migrate. Rails generará la estructura de tablas necesaria en la base de datos y estará lista para trabajar.

Una forma de realizar estos dos pasos en un solo comando es con rails db:setup. Es como ejecutar create y migrate en un solo comando.

Modelos

Si revisamos las migraciones de los dos modelos creados observamos que la tabla Taks tiene una llave foránea de Category.

Además en el model de Task tiene la propiedad belongs_to y como valor de la propiedad :category, para indicar que una el model Task pertenece a Category.

Para especificar que es una relación uno a muchos hay que indicarlo en el model de Category con la siguiente propiedad: has_many :tasks.

Ver las propiedades de los models

Para hacer que en los archivos de cada model se especifiquen los campos que tiene cada modelo hay que agregar la gema annotate en el Gemfile e instalarla (bundle install).

Esta gema agregará en forma de comentario información sobre los campos de cada model en su respectivo archivo. Para hacer esto se ejecuta el comando annotate --models.

Excelente clase, me parece genial la idea de documentar los modelos para que se especifiquen los atributos, me queda la duda si al migrar se agregan de forma automática esa docs, tendré que probar.

Excelente clase, me está gustando el curso, más que una pregunta es una aclaración para los que seguimos el curso en Windows, para poder realizar las migraciones y la creación de la base de datos, tendríamos que descargar previamente PostgreSQL, en el momento de la instalación preguntara acerca de un usuario y contraseña, tengan en cuenta que esta información es la que debe de estar nuestro archivo de database.yml, posteriormente en un paso preguntara acerca de un owner de las bases de datos, en mi caso cometí el error de poner como owner al usuario postgres, en lugar de el usuario que tenía en mi database.yml, siendo esta la situación este será el usuario a tener en el archivo de database.yml, espero les sirva de algo 😊

Hola necesito ayuda!
Cuando ejecuto rails db:migrate me sale un error, no lo he logrado solucionar…

Edita category.rb Puesto que una categoría puede tener muchas tareas, agrega: has_many :tasks

Realizar la migración

Editar config/database.yml

Habia escrito category:reference en lugar de category:references. (Me faltaba la s). Y ya por eso dure alrededor de una hora buscando el error. That’s a clasic 🤦🏽‍♂️