0

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

尝试在我的控制器中执行此操作,该控制器与 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'

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

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

我已经尝试过了,但它实际上似乎并没有查询任何内容(它返回所有 Doc 记录):

docs.i18n do
  title.matches(query)
end

我找不到任何有关如何like使用 Mobility 处理操作员查询的文档。有任何想法吗?

4

1 回答 1

1
The following error is the result:

如果这在 Globalize 中有效,那只是因为翻译表有一个名为title. 字符串不会被 Mobility(或 Globalize)解析,所以永远不要期望手工制作的 SQL 可以处理已翻译的属性。

Doc.i18n { title.matches(query) }

应该可以工作(它在 Mobility 自述文件中)。如果没有,您的模型中还有其他内容。

于 2021-10-13T14:05:58.037 回答