gpt4 book ai didi

mysql - Rails 中的 SQL 查询取决于参数是否存在

转载 作者:行者123 更新时间:2023-11-30 22:02:32 24 4
gpt4 key购买 nike

使用 Rails 4 和 MySQL。我有以下内容:

if params[:a].present? && params[:b].present? && params[:c].present?
Shop.where("a = ? AND b = ? AND c = ?", params[:a], params[:b], params[:c])
elsif params[:a].present? && params[:b].present?
Shop.where("a = ? AND b = ?", params[:a], params[:b])
elsif params[:a].present?
Shop.where("a = ?", params[:a])
else
Shop.where("z = ?"), params[:z])
end

写这个根本不理想,因为它很丑。有没有更好的方法?

最佳答案

Controller 代码:

if params[:a].present?|| params[:b].present? || params[:c].present?
Shop.custom_search(request.POST)
else
Shop.where("z = ?", params[:z])
end

模型代码:

 def self.custom_search(params_hash)
where(params_hash.slice("a", "b", "c"))
end

我假设如果参数 ac 存在,你会想要返回 ac。您实质上所做的是通过 request.POST 获取 POST 变量,如果存在任何参数,则将其放入模型代码中的自定义搜索算法中。

从那里您将对 params 散列进行切片,将键​​作为您希望获得的特定键值对的参数。

如果你不想明确地不想 params[:a]params[:c] 返回任何东西,你可以把 where在 unless 语句中,使用 key? 方法检查参数散列是否具有两个键。

 unless params_hash.key?("a") && params_hash.key?("c")
where(params_hash.slice("a", "b", "c"))
end

关于mysql - Rails 中的 SQL 查询取决于参数是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42934512/

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