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);

соответственно

Другие вопросы по тегам