Мне было интересно, смогу ли я получить справку по рефакторингу, чтобы сделать этот запрос более кратким.
По сути, этот запрос выполняет поиск во всех справочных документах по некоторым поисковым запросам.Он проверяет вопрос документа, его содержание и категорию, к которой он относится.
def self.search(text)
if text.blank?
latest
else
relation = sorted.joins(:category)
text.split(/\s/).each do |word|
relation = relation.where(
"lower(help_documents.question) like ? or lower(help_documents.content) like ? or lower(help_categories.name) like ?",
"%#{word.downcase}%", "%#{word.downcase}%", "%#{word.downcase}%"
)
end
relation
end
end
По сравнению с тем, как вы делаете это в java / hibernate, на самом деле это выглядит довольно хорошо.Но я подумал, что у людей могут быть еще более сексуальные уловки, чтобы выполнить то же самое.Например, могут быть некоторые методы / объекты, о которых я не знаю, которые уже делают подобные вещи.