搜索功能寻找多个单词

时间:2015-04-15 19:37:29

标签: ruby-on-rails ruby arrays

我的搜索表单存在问题,搜索多个单词。

我的模型中有这个功能。首先,我在KeyWords表中搜索我需要搜索库表的外来ID。

当我在KeyWords表格上搜索一个单词时,这可以正常工作,但我不知道如何搜索多个单词,因为每个单词都会返回一组ID。我不知道如何将它们一起折叠以在图书馆中搜索。

这是我的图书馆模型中的搜索功能:

def self.search(search)
    if search
        where("id in (?)", KeyWords.where("word like ?", "%#{search}%").pluck(:library_id))
    else
        all
    end
end

我试图做的就是拆分搜索参数,并且对于那里的每个单词,搜索key_words

#       array = Array.new
#       key_words = search.to_s.split(" ")
#       key_words.count.times do |i|
#           ids[i] = PalabrasClave.where("palabra like ?", "%#{key_words[i]}%").pluck(:daw_mate_acad_id)
#       end
#       where("id in (?)", ids.flatten.uniq)

但这不起作用。我认为搜索给了我一系列ID,我可以稍后使用join方法崩溃,但遗憾的是这不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

当我应该初始化array = Array.new时,我正在呼叫ids = Array.new

ids = Array.new
       key_words = search.to_s.split(" ")
       key_words.count.times do |i|
           ids[i] = PalabrasClave.where("palabra like ?", "%#{key_words[i]}%").pluck(:daw_mate_acad_id)
       end
       where("id in (?)", ids.flatten.uniq)