Ruby on Rails5:按城市/国家/地区过滤用户

时间:2017-12-08 15:44:22

标签: ruby-on-rails filtering ruby-on-rails-5 country city

为用户构建位置信息的最佳方法是什么?我需要能够通过城市/国家过滤数百个用户。

目前我已经为位置创建了一个自由文本字符串,因为我找不到任何分布在国家/地区下的城市的宝石。顺便说一下,这是一个自定义的脚手架,而不是设计。

enter image description here

我应该像城市,国家一样输入自由文本,然后根据相似的字符串过滤?

谢谢

2 个答案:

答案 0 :(得分:1)

如果您有用户的结构化数据(即地址,城市,州,国家/地区),则可以对这些数据进行过滤。例如:

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

答案 1 :(得分:1)

我不建议使用free-tex输入,因为您将获得同一城市和国家的不同可能条目,这将使过滤成为一项不可能完成的任务。使用下拉列表总是更好。

Here是使用java脚本的国家/地区的完整列表。

使用两个属性countrystate更改location属性,并使用上一个列表填充它们。