gpt4 book ai didi

mysql - Ruby 搜索多个字段

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

在我的 Rails 应用程序中,我需要通过表中的某个字段进行搜索,但主要的问题是我必须这样做:如果我在 View A 中选择了选择字段,我必须仅按 A 条件搜索,如果 A 和 B 都搜索,则按 A 和 B...现在我有:

Controller

@pre_oils = Oil.by_brand(params[:oilbrand]).by_oiloiliness(params[:oiloiliness]).by_structure(params[:oilstructure]).by_size(params[:oilsize])

模型

def self.by_oiloiliness(oiloiliness)
if oiloiliness
where("description LIKE ?", "%#{oiloiliness}%")
else
scoped
end
end

def self.by_brand(brand)
if brand
where("manufacturer LIKE ?", "%#{brand}%")
else
scoped
end
end

def self.by_structure(structure)
if structure
#where("structure LIKE ?", "%#{structure}%")
where("description LIKE ?", "%#{structure}%")
else
scoped
end
end

def self.by_size(size)
if size
where("capacity LIKE ?", "#{size}")
else
scoped
end
end

但是它搜索起来非常非常奇怪,一次有效,另一次无效....有什么不好的?以及如何仅按 View 中选择的这些字段进行搜索?

(还有 ruby​​ 1.9.3 rails 3.2.8)

也许可以在所有查询上使用查找进行获取,然后拆分它们并删除重复项?

更新

 oil = Oil.brand_like(params[:oilbrand])
oil = Oil.description_like(params[:oiloiliness])
oil = Oil.description_like(params[:oilstructure])
oil = Oil.capacity_eq(params[:oilsize])

upd2

@pre_oils = Oil.search(:manufacturer_like => params[:oilbrand], :description_like => params[:oiloiliness], :description_like => params[:oilstructure], :capacity_eq => params[:oilsize])

最佳答案

对于这类事情,有很多可用的 gem 。您可以浏览像 meta_search 这样的 gem , searchlogic执行搜索。

安装 meta_search 后,您可以这样做:

当您的 form 包含以下字段时:

 <%= f.text_filed :capacity_eq %>
<%= f.text_field :description_like %>

你会得到这样的参数:

 params => {"description_like" => "xyz", "capacity_eq" => "21"}

Oil.search(params) #To get your results

关于mysql - Ruby 搜索多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15009092/

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