2011-10-12 12 views
7

Dokumenty dotyczące klejnotu Globalize3 jasno określają sposób tworzenia tabeli translacji, ale nie widzę żadnych informacji o tym, jak dodać pole do tabeli tłumaczeń podczas późniejszej migracji. Na przykład początkowo zawierałem Category.create_translation_table! :name => :string podczas tworzenia mojego modelu kategorii. Teraz jednak muszę dodać do modelu przetłumaczone pole.Rails Globalize3 gem: Jak dodać dodatkowe pole do tabeli tłumaczeń za pomocą migracji?

Jak to zrobić z migracją Rails? Nie widzę żadnych docs dla metody alter_translation_table! lub coś podobnego ...

Odpowiedz

8

Z Globalize4, po prostu:

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

    def down 
    remove_column :category_translations, :hint 
    end 
end 

nie zapomnij dodać nowe pole w modelu:

translate :name, :hint 
12

Można to zrobić ręcznie, coś jak następuje:

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

Dam to spróbować, gdy będę miał szansę. Dziękuję za odpowiedź. – Clay

+2

@Clay Myślę, że to rozwiązanie nie działa, próbowałem go i dało mi dziwne błędy. Najpierw musiałem usunąć wiersz tłumaczenia w modelu dla dodanego atrybutu, aby wykonać 'rake db: migrate', wtedy nie mogłem zaktualizować encji. Skorzystałem z wolności, aby dodać problem do globalizatora3 wystawcy https://github.com/svenfuchs/globalize3/issues/98 – wintersolutions

+0

To rozwiązanie sprawdziło się. Po prostu nie zapomnij dodać kolumny do wiersza tłumaczy w modelu. –

Powiązane problemy