gpt4 book ai didi

ruby-on-rails - 参数查询

转载 作者:行者123 更新时间:2023-12-04 06:31:02 24 4
gpt4 key购买 nike

我想根据收到的参数获取记录。有时我会收到 2 个参数,有时会收到 3 个参数。我编写了一个代码来在收到所有 3 个参数时获取结果,但当我只收到 1 个参数时得到 0 个结果。

例子

Office.where(state: params[:state], type: params[:type]).where("name like ?","%#{params[:name]}%")

当我得到像这样的值时

{state: "KA", type: "private", name: "google"}

但是当我得到唯一的 {name: "google"} 时,我没有任何记录

我已经试过了

If params[:name].present? && params[:state].present? && params[:type].present?
query
elsif condition
query
end

让我知道如何解决这个问题或有什么更好的方法

最佳答案

你可以这样做

在 Controller 中

filter_params = params.slice(:state, :type, :name)
Office.filter(filter_params)

Office模型中

scope :state, -> (state) { where(state: state) }
scope :type, -> (type) { where(type: type) }
scope :name, -> (name) { where("name LIKE ?", "%#{name}%") }

def self.filter(filter_params)
results = where(nil)
filter_params.each do |key, value|
results = results.public_send(key, value) if value.present?
end
results
end

PS:无论参数数量如何,它都会运行单个查询!

希望有帮助!

关于ruby-on-rails - 参数查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58491907/

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