2011-03-24 45 views
1

我在编写一个搜索2个db列并返回结果的语句。如果不使用像Searchlogic这样的宝石,这可以轻松完成吗?在Rails 3.0中搜索多个db列

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

我有什么到目前为止是执行我的数据库的城市领域搜索的声明。不过,我想包含功能来涵盖按州查找的人的情况。

因此,如果有人键入'CA',搜索将返回加利福尼亚州的所有列表。如果用户输入“Los Angeles”,则洛杉矶的房源将被退回。简而言之,我想同时查询2个数据库字段并返回适当的结果。这可以用一个简单的语句来完成吗?

回答

5

要做的最好的事情是实施一个像solr或sphinx这样的全文解决方案。另外,如果你想现在让事情尽可能简单的,你只或搜索:通过Jeffrey W.

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

如何语法替代(更好):':条件

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

UPDATE => ['city LIKE:search OR state LIKE:search',:search =>“%#{search}%”)'? – 2011-03-24 16:45:29

+0

@jeffrey,是的,我更喜欢它。我真的忘了你可以这样做 – mnelson 2011-03-24 16:50:05

+0

感谢您的回复。这绝对是我正在寻找的解决方案。我不认为我的查询会比这更复杂,所以我一直在寻求避免使用搜索宝石来解决问题。 – mdunkle 2011-03-24 17:47:50