gpt4 book ai didi

ruby-on-rails - 搜索多列-Rails

转载 作者:行者123 更新时间:2023-12-03 13:39:27 25 4
gpt4 key购买 nike

我目前正在为我的Rails应用程序编写一种搜索方法,此刻它可以正常工作。我的game.rb中包含以下内容:

def self.search(search)
if search
find(:all, :conditions => ['game_name LIKE ? OR genre LIKE ? OR console LIKE ?', "%#{search}%", "#{search}", "#{search}"])
else
find(:all)
end
end


现在可以正常搜索了,但是我的问题是,如果game_name中有一个包含单词“ playstation”的记录,它将在此处完成搜索。它仅返回该记录,而不返回所有在控制台中存储有“ playstation”的游戏。现在我明白这是因为我的条件中有“或”的意思,但是我不知道其他选择。 “ AND”要求所有条件都匹配或完全不返回。我可以使用AND和OR的替代方法吗?帮助将不胜感激。

如果有一个解决方案具有单独的搜索框和条目,那就很好了,我不必要求搜索就可以基于一个搜索表单找到所有内容。

最佳答案

如果我正确理解了您的问题,那么您的SQL看起来对我来说很不错。 OR子句将返回所有在column1,column2或column3中匹配的记录。它不会在第一场比赛就停止。我确实看到您的参数有问题,因为第一个您使用的是%的LIKE,但第二个您不是,也许这就是您的问题所在。

这是否是您的发现(第二和第三次搜索的百分比)?

find(:all, :conditions => ['game_name LIKE ? OR genre LIKE ? OR console LIKE ?', "%#{search}%", "%#{search}%", "%#{search}%"])


或更好地使用DRY版本(以上版本不适用于Rails 4.2+):

Item.where('game_name LIKE :search OR genre LIKE :search OR console LIKE :search', search: "%#{search}%")

关于ruby-on-rails - 搜索多列-Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9379884/

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