Ruby on rails 在pg backed rails应用程序中,没有与给定名称和参数类型匹配的运算符
首先,我使用SQLITE作为数据库,在rails应用程序中实现了一个示例搜索功能 查询结果如下:Ruby on rails 在pg backed rails应用程序中,没有与给定名称和参数类型匹配的运算符,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,首先,我使用SQLITE作为数据库,在rails应用程序中实现了一个示例搜索功能 查询结果如下: @productions=Production.where('productions.status like?',“%#{params[:filter]}%”) 这很有效。我能够根据状态过滤记录 现在我在一个更大的应用程序上实现了相同的逻辑,唯一的区别是它有POSTGRESQL 逻辑 @ride\u later\u requests=RideLaterRequest.where('ride\u l
@productions=Production.where('productions.status like?',“%#{params[:filter]}%”)
这很有效。我能够根据状态过滤记录
现在我在一个更大的应用程序上实现了相同的逻辑,唯一的区别是它有POSTGRESQL
逻辑
@ride\u later\u requests=RideLaterRequest.where('ride\u later\u requests.status like?',“%\{params[:filter]}%”)
当我这次点击过滤器时,我得到了一些错误信息
LINE 1: ...later_requests" WHERE (ride_later_requests.status like '%8%'...
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
: SELECT "ride_later_requests".* FROM "ride_later_requests" WHERE (ride_later_requests.status like '%8%')):
我做错了什么?这和pg有关吗?请帮忙解决这个问题
模式
create_table "ride_later_requests", force: :cascade do |t|
t.string "customer_name"
t.integer "status"
end
RideLaterRequest.rb
enum status:{
UnderConstruction:1,
Submitted: 2,
Unfulfilled:3,
QuotesReady:4,
Fulfilled: 5,
Rejected:6,
Ignored:7,
Cancelled:8,
Expired:9
}
值得一提的是,我有两件事:
ActiveRecord#其中
进行输入清理,但通常最好在参数
到达DB调用之前验证它like
操作符的值。似乎您正在将状态锁定在enum
值中,因此您应该能够执行生产。其中('status IS?',params[:filter])
Production.where("status = ?", params[:filter])
@ride\u later\u requests=RideLaterRequest.where(“状态类似?”,“%\params[:filter]}%”)
试试这个only@Gabbar还是一样的错误。指向like
@ride\u later\u requests=RideLaterRequest.where(“status like?”,“%{params[:filter]}%”)这是怎么回事?现在仍然一样,指向like
什么是状态数据类型?您能共享您的模式吗?