gpt4 book ai didi

mysql - 在 SQL 语句搜索中查找 ruby​​ 哈希值

转载 作者:行者123 更新时间:2023-11-29 23:18:38 24 4
gpt4 key购买 nike

我正在使用数据表,它们内置有搜索功能。我试图查找并返回 ips 表中任何列类似于 :search (params[:sSearch) 的所有 IP。代码如下:

 def fetch_ips
ips = Ip.order("#{sort_column} #{sort_direction}")
ips = ips.page(page).per_page(per_page)
if params[:sSearch].present?
ips = ips.where("ip_address LIKE :search OR system_name LIKE :search OR description LIKE :search OR system_location LIKE :search OR status LIKE :search", search: "%#{params[:sSearch]}%")
end

此操作将决定“ips”是什么,我稍后将返回“ips”(但目前无效)。我遇到的问题是,此语句中的代码显示“status LIKE :search”(状态为数字),您必须在搜索栏中搜索数字,而我希望用户能够搜索描述。

为了澄清,我有一个哈希,它基本上将状态 0 - 3 映射到描述。描述是散列中的值,数字是键,因为数字存储在数据库中。

STATUSES = { 0 => "Unallocated",
1 => "Allocated",
2 => "Reserved",
3 => "Transient"
}

我如何允许用户搜索“status”的值,而不必搜索状态键。

最佳答案

search = "%#{params[:sSearch]}%"
status = STATUSES.key(search.titleize) || ""

“titleize”将大写第一个字母并小写其余字母。空字符串是必需的,因为它与整数列匹配时将返回 0 个匹配项;否则将匹配状态为 nil 的记录。

然后:

# reducing the number of columns in this example

ips = ips.where("
ip_address LIKE :search OR
system_name LIKE :search OR
status = :status
", {
search: search,
status: status
})

此外,仅供引用,您的代码中缺少“结束”。

关于mysql - 在 SQL 语句搜索中查找 ruby​​ 哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27546040/

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