【发布时间】:2012-03-11 21:36:56
【问题描述】:
我目前正在为我的 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 的替代方法是什么?帮助将不胜感激。
如果有一个解决方案具有单独的搜索框和条目,那很好,我不一定要求搜索基于一个搜索表单找到所有内容。
【问题讨论】:
-
对你来说可能是一个解决方案,就是将 gem 用于你想要的东西,比如 github.com/ernie/meta_where
标签: ruby-on-rails search conditional-statements