Необработанные 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.