【发布时间】:2026-02-24 12:45:01
【问题描述】:
我已将枚举 task_status 设置为:
class ConfirmedTask < ApplicationRecord
enum task_status: {pending: 1, complete: 2}
end
现在我必须使用搜索参数“挂起”来搜索所有处于挂起状态的任务。我正在使用 pg_search 进行搜索,但它不适用于枚举,所以我想使用 LIKE 查询进行查询:
ConfirmedTask.where('task_status like ?', '%pend%')
但这给了我错误
ActiveRecord::StatementInvalid (PG::UndefinedFunction: ERROR: 运算符不存在:整数~~未知)第 1 行:...asks".* FROM "confirmed_tasks" WHERE (task_status like '%pen... ^ 提示:没有运算符匹配给定的名称和参数类型。你可能需要 添加显式类型转换。
有什么建议吗?
【问题讨论】:
-
看起来 enum 不适合您的用例。我建议要么删除枚举并存储实际的字符串值(待处理,完成),或者如果你使用枚举让 UI 提供完整值('待处理'而不是'待处理')
标签: ruby-on-rails ruby plpgsql pg-search