SQL-запрос для User.first_name ИЛИ User.last_name ИЛИ оба? - PullRequest
0 голосов
/ 19 марта 2019

Я программирую приложение Rails, которое позволяет пользователю искать других пользователей.В настоящее время пользователь может искать имя или фамилию, но не оба.

Я использую:

@users = User.all.where("lower(first_name) LIKE :search OR lower(last_name) LIKE :search", search: "%#{parameter}%")

Учитывая, что атрибуты являются отдельными, как я могу обработать поиск типа «Гарри Поттер» с пробелом?Я посмотрел вокруг, игнорируя пробелы, а затем пытаясь разделить первое и последнее, но все они кажутся довольно сложными.

Ответы [ 2 ]

2 голосов
/ 19 марта 2019

Вы можете попробовать объединить имя и фамилию с помощью ||:

User.where(
  "(LOWER(firstname) || ' ' || LOWER(lastname)) LIKE :search",
  search: '%HARRY potter%'
)
0 голосов
/ 19 марта 2019

Вы можете разделить name на first_name и last_name, затем

User.where(
  "lower(first_name) LIKE :first_name AND lower(last_name) LIKE :last_name", 
  first_name: "%#{first_name}%", last_name: "%#{last_name}%"
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...