как использовать LIKE при поиске в рельсах - PullRequest
0 голосов
/ 23 октября 2018
def self.search_by(search_term)

   where("LOWER (course_name) LIKE :search", search_term: "%#{search_term}%")
end

это мой код, похоже, что LIKE-запрос вообще не работает

Ответы [ 5 ]

0 голосов
/ 23 октября 2018

Ключевое слово ILIKE может использоваться вместо LIKE для сопоставления строк без учета регистра, поэтому вам не нужно использовать LOWER.

Кроме того, причина, по которой ваш запрос не работаетявляется то, что вы должны изменить псевдоним :search_term с :search.

def self.search_by(search_term)
   where("course_name ILIKE :search", search: "%#{search_term}%")
end
0 голосов
/ 23 октября 2018

обновить ваш запрос до

, где ("НИЖЕ (имя_курса) LIKE: search_term ", search_term : "% # { search_term }% ")

измените ключевое слово: search на: search_term, вы использовали псевдоним: поиск в запросе, но указали: search_term, чтобы присвоить значение поиска.

0 голосов
/ 23 октября 2018
scope :search_by, -> (search_term){ where("LOWER(course_name) LIKE ?", "%#{search_term.to_downcase}%")}

ИЛИ

def self.search_by(search_term)
  where("LOWER(course_name) LIKE ?", "%#{search_term.to_downcase}%")
end
0 голосов
/ 23 октября 2018

Ваш код where("LOWER (course_name) LIKE :search", search_term: "%#{search_term}%") не работает, потому что он ожидает аргумент search, но вы передаете search_term.Итак, измените его на:

where("LOWER (course_name) LIKE :search", search: "%#{search_term}%") теперь вы предоставляете ту же переменную, которую он ожидает получить в "LOWER (course_name) LIKE :search".

0 голосов
/ 23 октября 2018

@ venues = Venue.where ('name LIKE?', "% # {@ Query}%")

...