标题说明了一切。目标是处理一个简单的搜索。
在我的控制器中尝试这样做,它与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操作符查询的文档。有什么想法吗?
发布于 2021-10-13 14:05:58
The following error is the result:如果这在Globalize中有效,那是因为translations表有一个名为title的列。字符串不是由Mobility (或Globalize)解析的,所以不要期望手工制作的SQL能与翻译后的属性一起工作。
Doc.i18n { title.matches(query) }应该可以工作(在Mobility自述文件中)。如果不是这样,那么您的模型中还存在其他问题。
https://stackoverflow.com/questions/69469556
复制相似问题