Необработанные SQL-запросы при использовании гема Globalize с Ruby on Rails

Я использую рубиновый гем Globalize для перевода в приложении Ruby on Rails. У меня есть модель, Region, который я перевожу name колонка на. При использовании ActiveRecord для запроса таблицы регионов, например:

Region.where(name: 'translated')

Запись региона с переведенным названием translated правильно возвращается. Тем не менее, когда я запрашиваю с:

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

Возвращает пустой ActiveRecord_Relation. Кажется, что запросы со строками SQL обращаются к записям базы данных напрямую, без использования гема Globalize.

Как я могу выступить like запросы, которые будут получать переведенные записи?

(Я работаю с Globalize 5.0.0 и Rails 4.2.8)

2 ответа

Решение

Решение, которое я получил для меня, было:

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

Это присоединяет таблицу region_translations к region_translations.region_id = region.id, где I18n.locale = region_translations.locale

Вы можете сделать это так:

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

Таким образом, вы получите доступ к таблице перевода из Globalize gem.

Другие вопросы по тегам