我正在尝试编写一个搜索2 db列并返回结果的语句。如果不使用像Searchlogic这样的宝石,这可以轻松完成吗?
def self.search(search)
if search
find(:all, :conditions => ['city LIKE ?', "%#{search}%"])
else
find(:all)
end
end
到目前为止我所做的是一个在我的数据库的city字段上执行搜索的语句。但是,我想提供功能来涵盖按州搜索的情况。
因此,如果某人键入“CA”,搜索将返回加利福尼亚州的每个商家信息。如果用户键入“洛杉矶”,将返回洛杉矶的列表。简而言之,我想同时查询2个db字段并返回适当的结果。这可以用简单的陈述来完成吗?
答案 0 :(得分:5)
最好的办法是实现像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}%"}])