如何在 Rails 中使用 Mobility 处理类似查询?

How do I handle a like query using Mobility in Rails?

标题说明了一切。目标是处理简单的搜索。

尝试在我的控制器中执行此操作,它与 Globalize 一起工作:

query = "%#{query}%"
docs = Doc.i18n.where(category_id: category_ids)
docs = docs.where("title like ?", query)

基于此模型:

class Doc < ApplicationRecord
  extend Mobility
  translates :title, type: :string
end

结果如下错误:

Mysql2::Error: Unknown column 'title' in 'where clause'

我已经尝试了以下方法,它不会引发错误,但也不起作用(returns 所有 Doc 记录):

docs = docs.where("title like #{query}", locale: :en)

我已经试过了,但它实际上似乎并没有查询任何东西(它 returns 所有 Doc 记录):

docs.i18n do
  title.matches(query)
end

我找不到任何关于如何使用 Mobility 处理 like 运算符查询的文档。有什么想法吗?

The following error is the result:

如果这在 Globalize 中有效,那只是因为翻译 table 有一个名为 title 的列。 Mobility(或 Globalize)不解析字符串,因此永远不要指望手工制作的 SQL 可以与翻译后的属性一起使用。

Doc.i18n { title.matches(query) }

应该有效(在移动自述文件中)。如果不是,则您的模型中发生了其他事情。