【发布时间】:2018-07-02 09:19:22
【问题描述】:
在我的应用程序上实现 Mobility 之前,我已经让这个查询工作了:
Product.joins(:category).where('categories.name ILIKE ANY ( array[?] )', categories)
类别为= params[:categories].map {|category| "%#{category}%" }
在实现了 Mobility gem 之后,查询输出明显是:[]
因此我尝试添加 .i18n,如 gem doc 中所述:Product.i18n.joins(:category).where('categories.name ILIKE ANY ( array[?] )', categories)
--> 输出 [],因为它不加入已翻译的表:SELECT "products".* FROM "products" INNER JOIN "categories" ON "categories"."id" = "products"."category_id" WHERE (categories.name ILIKE ANY ( array['%Categorie test%'] ))
然后我尝试加入类别翻译表,但没有成功。我试图用following question 激发我的查询。但是所有这些查询都失败了:
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 加入类别和查询以获得翻译输出?
【问题讨论】:
-
SQL 字符串不起作用,Mobility 没有简单的方法来解析它们。您可以将新的块格式与 Arel 谓词一起使用:github.com/shioyama/mobility#querying
标签: ruby-on-rails activerecord mobility