gpt4 book ai didi

ruby-on-rails - 在 Rails 4 和 ActiveRecord 中构建范围搜索

转载 作者:太空宇宙 更新时间:2023-11-03 16:23:18 26 4
gpt4 key购买 nike

过去几天我一直在寻找如何正确实现这一点。尝试了几个教程,但似乎没有一个对我有用。我不知道我做错了什么。

我需要做的是允许用户通过我网站上的配置文件进行搜索,并且应该允许他们使用范围进行搜索。例如,我收集高度和体重信息,用户应该能够搜索体重在 140-150 磅之间的人。

这似乎应该是一个简单的解决方案,但我似乎找不到一个好的示例或教程来说明如何执行此操作。

这是我的模型:

class Profile < ActiveRecord::Base
belongs_to :user

after_create :get_name
after_create :get_city

def self.search(search)
if search
attribs = columns.map(&:name)

query = self.all

(search.keys & attribs).each do |search_field|
search_value = search[search_field]
unless search_value.empty?
query = query.where("#{search_field} ILIKE ?", "%#{search_value}%")
end
end
else
self.all
end
end

def get_name
self.user.update_name
self.save
end

def get_city
self.user.update_city
self.save
end
end

所以我可以实际搜索我的表,但目前只能搜索一个重量,我需要能够搜索一个范围。我不确定这是否只是我需要做的 form_for 事情,或者我是否需要更改模型本身。任何帮助是极大的赞赏。

最佳答案

要将权重作为数组发送,您可以在表单中有两个字段,就像@jethroo 所说的,在模型中,您可以这样做:

Profile.where(weight: Range.new(*params[:weight]))

params[:weight] 是数组,如["123", "140"]

这将创建一个 SQL BETWEEN,如下所示:

SELECT * FROM profiles WHERE profiles.weight BETWEEN 123 AND  140

关于ruby-on-rails - 在 Rails 4 和 ActiveRecord 中构建范围搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29975947/

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