У меня был этот запрос, работающий до реализации Mobility в моем приложении:
Product.joins(:category).where('categories.name ILIKE ANY ( array[?] )', categories)
где категории = params[:categories].map {|category| "%#{category}%" }
После внедрения Gem Mobility вывод запроса был, очевидно, следующим: []
Таким образом, я попытался добавить .i18n, как указано в gem doc: Product.i18n.joins(:category).where('categories.name ILIKE ANY ( array[?] )', categories)
-> Outputs [], поскольку он не включается в переведенную таблицу: SELECT "products".* FROM "products" INNER JOIN "categories" ON "categories"."id" = "products"."category_id" WHERE (categories.name ILIKE ANY ( array['%Categorie test%'] ))
Тогда я безуспешно пытался присоединиться к категории переведенных таблиц. Я попытался вдохновить свой запрос следующим вопросом . Но все эти запросы терпят неудачу:
Product.i18n.joins(:category).joins(:translations).where('categories.name ILIKE ANY ( array[?] )', categories)
Product.i18n.joins(:category).join_translations.where('categories.name ILIKE ANY ( array[?] )', categories)
Product.i18n.joins(:mobility_string_translations).where('categories.name ILIKE ANY ( array[?] )', categories)
Product.i18n.joins(:category_name_fr_string_translations).where('categories.name ILIKE ANY ( array[?] )', categories)
Возвращает либо: undefined method join_translations
или Can't join 'Product' to association association_name '
Как я могу объединить категорию и запрос с ILIKE для получения переведенных результатов?