如何在 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) }
应该有效(在移动自述文件中)。如果不是,则您的模型中发生了其他事情。
标题说明了一切。目标是处理简单的搜索。
尝试在我的控制器中执行此操作,它与 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) }
应该有效(在移动自述文件中)。如果不是,则您的模型中发生了其他事情。