首页 > 解决方案 > Mongoid find_by 本地化字段的任何语言

问题描述

使用 Mongoid / MongoDB,我怎样才能找到一个文档,其名称以任何一种可用语言匹配我的 where 查询?

假设我有一个具有本地化字段和许多翻译的模型

class Foo
   field :name, localize: true
end

Foo.create(name_translations: { 
  'fr' => 'Ingénierie logicielle',
  'en' => 'Computer Software'
})

.find_by(name: )方法似乎只能找到I18n.current语言(在我的情况下是法语),我如何搜索所有翻译?

我正在尝试几种变体Foo.find_by(name_translations: 'Computer Software),但我仍然得到空的结果......

标签: ruby-on-railsruby-on-rails-5mongoidmongoid6

解决方案


也许有一个更优雅的解决方案,但由于它似乎name是一个嵌入式文档,您需要匹配每种语言:

term = 'Computer Software'
Foo.or({ :'name.en' => term }, { :'name.fr' => term })

推荐阅读