首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Rails中使用Mobility处理like查询?

如何在Rails中使用Mobility处理like查询?
EN

Stack Overflow用户
提问于 2021-10-06 16:40:47
回答 1查看 40关注 0票数 0

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

在我的控制器中尝试这样做,它与Globalize一起工作:

代码语言:javascript
复制
query = "%#{query}%"
docs = Doc.i18n.where(category_id: category_ids)
docs = docs.where("title like ?", query)

基于此模型:

代码语言:javascript
复制
class Doc < ApplicationRecord
  extend Mobility
  translates :title, type: :string
end

以下是错误的结果:

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

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

代码语言:javascript
复制
docs = docs.where("title like #{query}", locale: :en)

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

代码语言:javascript
复制
docs.i18n do
  title.matches(query)
end

我找不到任何关于如何使用移动性处理like操作符查询的文档。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-13 14:05:58

代码语言:javascript
复制
The following error is the result:

如果这在Globalize中有效,那是因为translations表有一个名为title的列。字符串不是由Mobility (或Globalize)解析的,所以不要期望手工制作的SQL能与翻译后的属性一起工作。

代码语言:javascript
复制
Doc.i18n { title.matches(query) }

应该可以工作(在Mobility自述文件中)。如果不是这样,那么您的模型中还存在其他问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69469556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档