2011-10-12 13 views
7

Los documentos de la gema Globalize3 son claros acerca de cómo crear una tabla de traducción, pero no veo ninguna información sobre cómo agregar un campo a una tabla de traducción durante una migración posterior. Por ejemplo, inicialmente incluí Category.create_translation_table! :name => :string cuando creé mi modelo de Categoría. Ahora, sin embargo, necesito agregar un campo traducido al modelo.Rails Globalize3 gem: ¿Cómo agrego un campo adicional a la tabla de traducción mediante una migración?

¿Cómo hago eso con una migración de Rails? No veo ninguna documentación para un método alter_translation_table! o algo similar ...

Respuesta

8

Con Globalize4, simplemente:

class AddHintToCategory < ActiveRecord::Migration 
    def up 
    Category.add_translation_fields! hint: :text 
    end 

    def down 
    remove_column :category_translations, :hint 
    end 
end 

no se olvide de añadir el nuevo campo en su modelo:

translate :name, :hint 
12

Usted puede hacerlo a mano, algo así como lo siguiente:

class AddNewFieldToYourTable < ActiveRecord::Migration 
    def self.up 
    change_table(:your_tables) do |t| 
     t.string :new_field 
    end 
    change_table(:your_table_translations) do |t| 
     t.string :new_field 
    end 
    end 

    def self.down 
    remove_column :your_tables, :new_field 
    remove_column :your_table_translations, :new_field 
    end 
end 
+0

Haré esto una prueba cuando tenga la oportunidad. Gracias por la respuesta. – Clay

+2

@Clay Creo que esta solución no funciona, lo probé y me dio errores extraños. Primero tuve que eliminar la línea de traducción en el modelo para que el atributo agregado hiciera un 'rake db: migrate', luego no pude actualizar la entidad. Me tomé la libertad de agregar un problema a globaltra3 issuetracker https://github.com/svenfuchs/globalize3/issues/98 – wintersolutions

+0

Esta solución funcionó para mí. Simplemente no olvide agregar la columna en la línea de traducción en el modelo. –

Cuestiones relacionadas