在Rails 3.0中搜索多个db列

我正在尝试编写一个搜索2 db列并返回结果的语句。 如果不使用像Searchlogic这样的gem,这可以轻松完成吗?

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

到目前为止,我所做的是一个在我的数据库的city字段上执行搜索的语句。 但是,我想要包含function来涵盖按州搜索某人的情况。

因此,如果某人键入“CA”,搜索将返回加利福尼亚州的每个商家信息。 如果用户键入“洛杉矶”,将返回洛杉矶的列表。 简而言之,我想同时查询2个db字段并返回适当的结果。 这可以通过一个简单的声明来完成吗?

最好的办法是实现像solr或sphinx这样的全文解决方案。 或者,如果你想让事情变得尽可能简单,那么你只需要搜索:

 def self.search(search) if search find(:all, :conditions => ['city LIKE ? OR state LIKE ?', ["%#{search}%"]*2].flatten) else find(:all) end end 

更新:语法替代(更好)通过Jeffrey W.

 find(:all, :conditions => ['city LIKE :search OR state LIKE :search', {:search => "%#{search}%"}])