gpt4 book ai didi

ruby-on-rails - Controller 中的 ActiveRecord::StatementInvalid#method

转载 作者:太空宇宙 更新时间:2023-11-03 17:05:01 24 4
gpt4 key购买 nike

我正在做复杂的搜索,为此我有特殊的模型:

create_table "cmdb_searches", force: :cascade do |t|
t.string "client"
t.string "in"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

和 evms_controller 中的方法搜索:

def search
@cisearch = CmdbSearch.new(search_params)
@evms = Evm.order('id DESC')
@evms = @evms.where('client_name=?',@cisearch.client) if #cisearch.client.present?
@evms = @evms.where('in=?',@cisearch.in) if @cisearch.in.present?
respond_to do |format|
format.js
end
end

我的 js 文件用响应填充适当的 div。如果我将表格留空或仅填写 :client 字段,它会起作用,但是如果我填写 :in 字段,它将返回一个错误:

SQLite3::SQLException: near "in": syntax error: SELECT "evms".* FROM "evms" WHERE (in='234543')  ORDER BY id DESC

最佳答案

in is an SQL operator .虽然从技术上讲,您可以将它用作列名,但要这样做,您必须对它进行转义。这就是我尽量避免在查询中使用纯 SQL 的原因。

@evms.where('in=?',@cisearch.in) 替换为 @evms.where(in: @cisearch.in)。这样它将被正确转义。

关于ruby-on-rails - Controller 中的 ActiveRecord::StatementInvalid#method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30752852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com