Globalize3 gem的文档清楚地说明了如何创建转换表,但是我没有看到任何有关如何在以后的迁移过程中向转换表添加字段的信息。例如,我在创建Category模型时最初包含Category.create_translation_table! :name => :string
。但是,现在我需要将一个已翻译的字段添加到模型中。
如何使用Rails迁移执行此操作?我没有看到alter_translation_table!
方法或类似内容的任何文档......
答案 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'未定义。