Rails Globalize3 gem: Как добавить дополнительное поле в таблицу перевода с помощью миграции? - PullRequest
7 голосов
/ 12 октября 2011

Документы для гема Globalize3 ясно о том, как создать таблицу перевода, но я не вижу никакой информации о том, как добавить поле в таблицу перевода при последующей миграции.Например, я изначально включил Category.create_translation_table! :name => :string, когда создал свою категорию.Теперь, однако, мне нужно добавить переведенное поле в модель.

Как мне это сделать с помощью миграции на Rails?Я не вижу документов для alter_translation_table! метода или чего-то подобного ...

Ответы [ 3 ]

12 голосов
/ 24 января 2012

Вы можете сделать это вручную, примерно так:

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
9 голосов
/ 08 июля 2014

С Globalize4, просто:

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

  def down
    remove_column :category_translations, :hint
  end
end

Не забудьте добавить новое поле в вашу модель:

translate :name, :hint
1 голос
/ 19 июля 2014

https://github.com/globalize/globalize/blob/master/lib/globalize/active_record/migration.rb:34 строка (глобализация 4)

add_translation_fields!(fields, options)

PS Просто опечатка в предыдущем комментарии, add_transaction_fields не определена.

...