2012-07-26 14 views
14

Estoy usando rails 3.2.6 y necesito crear una base de datos VIEW. Como de costumbre, creé una migración e intenté lograr el objetivo utilizando el método de ejecución.Rails 3.2.6 y creación de vistas de bases de datos a través de migraciones

Lamentablemente, la migración genera una tabla, no una vista. ¿Por qué?

Muchas gracias de antemano, Mauro

ACTUALIZACIÓN:

me gustaría tener algo de la siguiente manera:

class CreateMyView < ActiveRecord::Migration 
    def self.up 
    execute <<-SQL 
     CREATE VIEW my_view AS SELECT ... 
    SQL 
    end 
    def self.down 
    execute <<-SQL 
     DROP VIEW my_view 
    SQL 
    end 
end 

Desafortunadamente esta migración crea una tabla ...

ACTUALIZACIÓN: ¡el código anterior funciona! Estaba ejecutando rake db: reinicio en lugar de rake db: migrate: reset (error mío)

+1

No estoy seguro de que sea posible generar dicha migración. Use SQL sin procesar para crear vista. –

+0

Estoy haciendo lo mismo (excepto que estoy usando def up y def down, no def self.up y def self.down - ¿hay alguna diferencia?) Y obtengo el mismo comportamiento: crea una vista cuando ejecutar la migración, pero agrega un comando create_table al archivo schema.rb. – Ladlestein

Respuesta

2

Parece que ha respondido su propia pregunta, pero le haré una sugerencia relacionada. Pruebe el rails_sql_views gem. Ese enlace va al repositorio original en GitHub. Parece que ya no se está manteniendo. Vale la pena mirar el network graph y probar uno de los tenedores. No soy positivo que cualquiera de las horquillas es compatible con Rails 3.2.6, pero sugiero consultarlas. Christian Eichhorn added support for the mysql2 adapter hace aproximadamente tres años.

2

He hecho una gema llamada rails_db_views que es compatible con Rails 4, y aún se mantiene.

Saludos,

Yacine.

+0

Hola Yacine, bienvenido a StackOverflow. En lugar de apuntar a un ejemplo externo en github, sería más útil para otros que buscan una solución si pudieran especificar aquí lo que hicieron para resolver el problema. –

+0

¡Hola Amos! Gracias por tu comentario. En realidad, el problema es que el sistema de migración tal como se realizó en Rails no está hecho para manejar vistas ... Así que no hay un sistema "simple", y creo que debe implementar una nueva forma de administrar las vistas. Es por eso que di esta solución;) – Yacine

Cuestiones relacionadas