1

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

Region.where(name: 'translated')

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

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

它返回一个空的 ActiveRecord_Relation。似乎使用 SQL 字符串进行查询会直接访问数据库记录,而无需使用 Globalize gem。

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

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

4

2 回答 2

2

我为我工作的解决方案是:

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

这将连接 region_translations.region_id = region.id 上的 region_translations 表,其中 I18n.locale = region_translations.locale

于 2017-10-03T13:54:55.730 回答
0

你可以这样做:

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

这样您就可以从 Globalize gem 访问翻译表。

于 2017-10-02T03:22:01.070 回答