Mobility gem + Rails :如何在翻译后的模型上使用 LIKE 查询执行连接

Mobility gem + Rails : how to perform a join with LIKE query on a translated model

在我的应用程序上实现移动性之前,我已经使用了这个查询:

Product.joins(:category).where('categories.name ILIKE ANY ( array[?] )', categories)

其中类别是 = params[:categories].map {|category| "%#{category}%" }

实施移动性 gem 后,查询输出显然是:[]

因此我尝试按照 gem 文档中的说明添加 .i18n:Product.i18n.joins(:category).where('categories.name ILIKE ANY ( array[?] )', categories)

--> 输出 [],因为它没有加入翻译后的 table : SELECT "products".* FROM "products" INNER JOIN "categories" ON "categories"."id" = "products"."category_id" WHERE (categories.name ILIKE ANY ( array['%Categorie test%'] ))

然后我尝试加入翻译类table但没有成功。我试图用 激发我的查询。但是所有这些查询都失败了:

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_translationsCan't join 'Product' to association association_name '

如何使用 ILIKE 加入类别和查询以获得翻译输出?

感谢 Chris 的帮助,这是可用的 Arel 查询,供可能感兴趣的人使用:

Product.joins(:category).merge(Category.i18n {name.matches_any(categories)})