添加翻译功能并自动迁移现有记录的最简单方法是什么?
Globalize GEM提供了一个具有选项migrate_data: true
的方法create_translation_table
,是否有同等的移动性?
使用>:key_value 策略,我在使用GEM时发现的唯一解决方法是为每个表创建一个迁移,并使用 [:column_name]
示例:如果我们有 post 表,并且我想添加它是 name 属性属性:移动性迁移必须执行,post.rb
必须包括:
# post.rb
class Post < ApplicationRecord
extend Mobility
translates :name, type: :string
end
然后更新记录以反映默认语言的值(假设application.rb
具有config.i18n.default_locale = :de
,并且initializers/mobility.rb
定义了locale_accessors [:de, :en, :sl]
Post.all.each do |post|
post.update(name_de: post[:name])
end
然后验证:
> Post.last.name_de
> Post.last.name_en
> Post.last.name_sl