在 Rails 上使用具有 Ruby 的全球化 gem 时的原始 SQL 查询

Raw SQL queries when using the Globalize gem with Ruby on Rails

我在 Rails 应用程序的 Ruby 中使用 ruby gem Globalize to 进行翻译。我有一个模型,Region,我正在翻译 name 列。当使用ActiveRecord查询区域table时,如:

Region.where(name: 'translated')

已正确返回具有翻译名称translated 的区域记录。 但是,当我查询时:

Region.where('name like ?', 'translated')

它 returns 一个空的 ActiveRecord_Relation。似乎使用 SQL 字符串查询直接访问数据库记录而不使用 Globalize gem。

如何执行 like 检索翻译记录的查询?

(我正在使用 Globalize 5.0.0 和 Rails 4.2.8)

你可以这样做:

Region.includes(:translations).where('name like ?', 'translated')

这样您就可以访问来自 Globalize gem 的翻译 table。

我得到的解决方案是:

Region.with_translations(I18n.locale).where('region_translations.name like ?', "translated")

这将在 region_translations.region_id = regions.id 上加入 region_translations table,其中 I18n.locale = region_translations.locale