在单个搜索文本字段中搜索多个关键字(RAILS)

Lev*_*Lev 3 search ruby-on-rails-3

我很新,在Rails中搜索数据库.我有一个模型和数据库,在'name'属性下有一个名称列表.我希望能够将搜索关键字输入到单个搜索字段中,并且此输入可以是一个字或两个字或更多,具体取决于用户想要的结果的具体程度.

现在,我正在使用如下所示的丑陋内容,最多可以执行3个搜索字词.有没有办法让'search_length'关键字成为动态?find方法显然是重复的,但我不确定如何自动化它并且在其他地方没有找到任何有用的建议.

def self.search(search)

  if search
    search_length = search.split.length
    find(:all, :conditions => ['name LIKE ? AND name LIKE ? AND name LIKE ?', 
    "%#{search.split[0]}%", "%#{search.split[1]}%", 
    "%#{search.split[search_length1]}%"])
  else
    find(:all)
  end
end
Run Code Online (Sandbox Code Playgroud)

除此之外,到目前为止,爱Rails.

非常感谢Lev

小智 7

如果您使用其他%符号关闭名称变量,则ŁukaszŚliwa的代码效果很好.

上面的完整代码为我工作.好帖子.

def self.search(search)

  if search
    search_length = search.split.length
    find(:all, :conditions => [(['name LIKE ?'] * search_length).join(' AND ')] + search.split.map { |name| "%#{name}%" })
  else
    find(:all)
  end

end
Run Code Online (Sandbox Code Playgroud)