【问题标题】:Search multiple db columns in Rails 3.0在 Rails 3.0 中搜索多个 db 列
【发布时间】:2011-07-22 07:18:22
【问题描述】:

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

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

到目前为止,我所拥有的是一个在我的数据库的城市字段上执行搜索的语句。但是,我想包含一些功能来涵盖某人按状态搜索的情况。

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

【问题讨论】:

    标签: ruby-on-rails search


    【解决方案1】:

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

    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}%"}])
    

    【讨论】:

    • 怎么样::conditions => ['city LIKE :search OR state LIKE :search', :search => "%#{search}%")?
    • @jeffrey,是的,我更喜欢它。老实说,我忘了你能做到这一点
    • 感谢您的回复。这绝对是我正在寻找的解决方案。我认为我的查询不会变得比这复杂得多,因此我希望避免使用搜索 gem 来解决问题。
    猜你喜欢
    • 2012-03-11
    • 2015-02-14
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 2013-03-02
    相关资源
    最近更新 更多