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

Я использую рубиновый гем Globalize to для перевода в приложении 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)


person Hula_Zell    schedule 02.10.2017    source источник


Ответы (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

person Hula_Zell    schedule 03.10.2017

Сделать это можно так:

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

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

person Babar Al-Amin    schedule 02.10.2017