Cambios en la database de Git en schema.rb

Entonces hay 2 twigs relevantes. notifications y shipping_options .

Comprobé las notifications fuera del master y luego realicé dos cambios importantes en la database:

  • GeneralNotice creado GeneralNotice
  • Modificado el model de Notice existente , agregando un boolean dismissed

Luego, shipping_options también se desprotegió del maestro en el mismo estado que las notifications , y no se realizaron cambios en la database, solo cambios de código menores.

Ejecuté rake db:migrate la primera vez que cambie de notifications a notifications de shipping_options y lo mismo viceversa.

Por el momento, cuando estoy en las notifications , y corro rails c obtengo lo siguiente:

 2.0.0-p451 :001 > Notice => Notice(id: integer, title: string, description: text, created_at: datetime, updated_at: datetime, kind: string, general_notice_id: integer, shop_id: integer, dismissed: boolean) 2.0.0-p451 :002 > GeneralNotice => GeneralNotice(id: integer, title: string, description: text, created_at: datetime, updated_at: datetime) 2.0.0-p451 :003 > 
  • La notificación se ha dismissed (como se esperaba)
  • GeneralNotice existe (como se esperaba)

Luego, cambio a opciones de shipping_options y espero que lo haya estado siguiendo porque aquí viene la parte confusa …

 2.0.0-p451 :001 > Notice => Notice(id: integer, title: string, description: text, created_at: datetime, updated_at: datetime, kind: string, general_notice_id: integer, shop_id: integer, dismissed: boolean) 2.0.0-p451 :002 > GeneralNotice NameError: uninitialized constant GeneralNotice from (irb):2 from /Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/railties-3.2.13/lib/rails/commands/console.rb:47:in `start' from /Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/railties-3.2.13/lib/rails/commands/console.rb:8:in `start' from /Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/railties-3.2.13/lib/rails/commands.rb:41:in `<top (requinetworking)>' from script/rails:6:in `require' from script/rails:6:in `<main>' 2.0.0-p451 :003 > 
  • GeneralNotice no existe, por lo que aparentemente git está siendo muy amable y servicial al cambiar la database de acuerdo con mi twig
  • Notice todavía tiene un boolean dismissed … Whaaaat ???? ¿Está siendo bueno o no? ¡¡¡¡¡¡AYUDA!!!!!!

  1. Dado que ha ejecutado la migration en la primera sucursal (notifications), la columna se agregó a la tabla de la database, por lo tanto, se mostrará si inspecciona. El método de inspección funciona directamente con la tabla de la database, reflejando las columnas (attributes).

  2. GeneralNotice: si comtesting su database, contendría la tabla (general_notices) pero dado que el file general_notice.rb en el que se define GeneralNotice no está presente en esta twig, arroja un error constante no inicializado.

Eche un vistazo a esto y esto para algunas ideas para poner su db bajo control de versión.

Cada vez que cambie de bifurcación, y las bifurcaciones pueden contener un set de migraciones diferentes, es aconsejable ejecutar rake db:reset que schema.rb esquema de la database desde el file schema.rb .

Para asegurarse de que su schema.rb esté actualizado en todas las sucursales, es una buena idea ejecutar rake db:migrate:reset cada vez que fusiona sucursales con nuevas migraciones. Esta tarea de rake ejecuta todas sus migraciones desde el principio y escribe el esquema de database resultante en un file.