首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails i18n API三重破折号/连字符、椭圆和新行

Rails i18n API三重破折号/连字符、椭圆和新行
EN

Stack Overflow用户
提问于 2018-03-22 12:03:20
回答 1查看 187关注 0票数 0

我使用i18n API是为了一个目的。我在MySQL数据库中添加了以下内容:

代码语言:javascript
复制
Translation.find_or_create_by(locale: 'en', key:'key1', value: 'value1')

但是,种子之后,将数据保存到数据库中,如下所示:

代码语言:javascript
复制
locale: en
key: key1
value: --- value1\n...\n

所有列都是varchar(255)和‘utf8 8_unicode_ci’。

在Rails i18n文档中,我找不到对此的解释。

由于这个问题,我不能使用find_or_create_by()方法。它做/不能检查值列并添加重复条目。

有什么解决办法吗?

翻译模式:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-22 13:36:34

您在value列中看到的是值序列化为YAML (由I18n::Backend::ActiveRecord::Translation完成);除其他外,这是多元化所必需的。

当存储在数据库中的值需要序列化时,#find_or_create_by不能很好地工作

做一个简单的种子尝试:

代码语言:javascript
复制
Translation.create_with(value: 'value1').find_or_create_by(locale: 'en', key: 'key1')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49428225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档