2011-10-12 16 views
7

I documenti per la gemma Globalize3 sono chiari su come creare una tabella di conversione, ma non vedo alcuna informazione su come aggiungere un campo a una tabella di traduzione durante una successiva migrazione. Ad esempio, inizialmente ho incluso Category.create_translation_table! :name => :string quando ho creato il mio modello di categoria. Ora, tuttavia, ho bisogno di aggiungere un campo tradotto al modello.Rails Globalize3 gem: Come posso aggiungere un campo aggiuntivo alla tabella di conversione utilizzando una migrazione?

Come faccio con una migrazione di Rails? Non vedo alcun docs per un metodo alter_translation_table! o qualcosa di simile ...

risposta

8

Con Globalize4, basta:

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

    def down 
    remove_column :category_translations, :hint 
    end 
end 

non dimenticare di aggiungere il nuovo campo nel modello:

translate :name, :hint 
12

si può fare a mano, qualcosa di simile al seguente:

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

Lo proverò quando ne avrò la possibilità. Grazie per la risposta. – Clay

+2

@Clay Penso che questa soluzione non funzioni, l'ho provata e mi ha dato strani errori. Per prima cosa ho dovuto rimuovere la linea di traduzione nel modello per l'attributo aggiunto per fare un 'rake db: migrate', quindi non ho potuto aggiornare l'entità. Ho preso la libertà di aggiungere un problema al issuetracker di globalize3 https://github.com/svenfuchs/globalize3/issues/98 – wintersolutions

+0

Questa soluzione ha funzionato per me. Non dimenticare di aggiungere la colonna nella riga tradotta nel modello. –

Problemi correlati