mdu*_*kle 1 search ruby-on-rails
我正在尝试编写一个搜索2 db列并返回结果的语句.如果不使用像Searchlogic这样的宝石,这可以轻松完成吗?
def self.search(search)
if search
find(:all, :conditions => ['city LIKE ?', "%#{search}%"])
else
find(:all)
end
end
Run Code Online (Sandbox Code Playgroud)
到目前为止我所做的是一个在我的数据库的city字段上执行搜索的语句.但是,我想要包含功能,以涵盖按州搜索的情况.
因此,如果某人键入"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
Run Code Online (Sandbox Code Playgroud)
更新:语法替代(更好)通过Jeffrey W.
find(:all, :conditions => ['city LIKE :search OR state LIKE :search', {:search => "%#{search}%"}])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2337 次 |
| 最近记录: |