我正在使用i18n API。我用:
种子MySQL数据库Translation.find_or_create_by(locale: 'en', key:'key1', value: 'value1')
但是,在种子之后,数据将保存在数据库中:
locale: en
key: key1
value: --- value1\n...\n
所有列都是varchar(255)和' utf8_unicode_ci'。
在Rails i18n文档中,我无法找到解释。
由于这个问题,我不能使用find_or_create_by()方法。它/不能检查值列并添加重复的条目。
有没有解决方案?
翻译模型:
Translation = I18n::Backend::ActiveRecord::Translation
if Translation.table_exists?
I18n.backend = I18n::Backend::ActiveRecord.new
I18n::Backend::ActiveRecord.send(:include, I18n::Backend::Memoize)
I18n::Backend::Simple.send(:include, I18n::Backend::Memoize)
I18n::Backend::Simple.send(:include, I18n::Backend::Pluralization)
I18n.backend = I18n::Backend::Chain.new(I18n::Backend::Simple.new, I18n.backend)
end
答案 0 :(得分:1)
您在value
列中所看到的是值serialized to YAML(由I18n::Backend::ActiveRecord::Translation
完成的);除其他外,这是多元化所必需的。
#find_or_create_by
不能很好地工作
做一个简单的种子尝试:
Translation.create_with(value: 'value1').find_or_create_by(locale: 'en', key: 'key1')