Ruby on Rails5: фильтрация пользователей по городу / стране
Каков наилучший способ структурировать информацию о местоположении для пользователей? Мне нужно иметь возможность фильтровать сотни пользователей по городу / стране.
В настоящее время я создал текстовую строку для определения местоположения, так как не смог найти драгоценный камень для целых городов, сгруппированных по странам. Кстати, это нестандартная леска, а не придуманная.
Должен ли я просто ввести такой же свободный текст, как в городе, стране, а затем отфильтровать на основе этой строки одинаково?
Спасибо
2 ответа
Я не рекомендую использовать ввод свободного текста, потому что вы получите разные возможные записи для одного и того же города и страны, что сделает фильтрацию невыполнимой задачей. Всегда лучше использовать выпадающий список.
Вот полный список стран и городов, использующих java-скрипт.
изменить атрибут местоположения с двумя атрибутами country
а также state
и используйте предыдущий список, чтобы заполнить их.
Если у вас есть структурированные данные (например, адрес, город, штат, страна) для ваших пользователей, вы можете отфильтровать их. Например:
WHERE city || ', ' || country ILIKE ?
Если вы этого не сделаете, вы все равно можете попробовать это, предполагая информацию о расположении произвольной формы в вашей таблице пользователей (вы не были понятны в схеме базы данных):
WHERE location ILIKE ?
В идеале вы должны разделить город и страну и отфильтровать их отдельно:
WHERE city ILIKE ? AND country ILIKE ?
Сотни не должны быть большой проблемой производительности, но вы можете определенно построить индексы для любого из них:
CREATE INDEX city_country_on_users ON users(city || ', ' || country);
CREATE INDEX city_country_on_users ON users(location);
CREATE INDEX city_country_on_users ON users(city, country);
соответственно