在Rails 3.0中搜索多个db列

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字段并返回适当的结果.这可以通过一个简单的声明来完成吗?

mne*_*son 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
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)

  • 怎么样:`:conditions => ['city LIKE:搜索或状态LIKE:搜索',:search =>"%#{search}%")`? (4认同)