У меня возникла проблема с формой поиска, которая ищет несколько слов.Функция поиска для поиска нескольких слов
У меня есть эта функция в моей модели. Во-первых, я ищу таблицу KeyWords
для иностранных идентификаторов, которые мне нужны для поиска в таблице библиотеки.
Это работает нормально, когда я ищу одно слово в моей таблице KeyWords
, но я не знаю, как искать несколько слов, учитывая, что каждое из этих слов вернет группу идентификаторов. Я не знаю, как свернуть их вместе, чтобы искать в библиотеке.
Это моя функция поиска в моей модели библиотеки:
def self.search(search)
if search
where("id in (?)", KeyWords.where("word like ?", "%#{search}%").pluck(:library_id))
else
all
end
end
То, что я пытался сделать что-то вроде spliting поиска параметров, и для каждого слова есть, поиск 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)
но это не работает. Я думал, что поиск дал мне массив идентификаторов, которые я мог позже свернуть вместе с методом join
, но, к сожалению, это не работает. Есть идеи?
Что вы имеете в виду, говоря, что не работает? Пожалуйста, дайте некоторую информацию об этом, не сработает ли она или что? –
он не работает, он не приносит массив идентификаторов, которые будут найдены позже в библиотеке, при каждом обычном поиске приносит супер случайное число, подобное 15 .... – fr3d0
Я добавил .flatten.uniq, и теперь он ищет все элементы в библиотеке, даже если я ищу одно слово .... должно быть что-то не так с логикой, я думаю – fr3d0