Rails Globalize3 gem:如何使用迁移向转换表添加其他字段?

时间:2011-10-12 15:02:40

标签: ruby-on-rails globalization

Globalize3 gem的文档清楚地说明了如何创建转换表,但是我没有看到任何有关如何在以后的迁移过程中向转换表添加字段的信息。例如,我在创建Category模型时最初包含Category.create_translation_table! :name => :string。但是,现在我需要将一个已翻译的字段添加到模型中。

如何使用Rails迁移执行此操作?我没有看到alter_translation_table!方法或类似内容的任何文档......

3 个答案:

答案 0 :(得分:12)

你可以手动完成,如下所示:

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

答案 1 :(得分:9)

使用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

答案 2 :(得分:1)

https://github.com/globalize/globalize/blob/master/lib/globalize/active_record/migration.rb:34行(globalize 4)

add_translation_fields!(fields, options)

P.S。只是前一条评论中的拼写错误,'add_transaction_fields'未定义。