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

Ruby on Rails5: Filtering users by City / Country

为用户构建位置信息的最佳方式是什么?我需要能够按 City/Country 过滤数百个用户。

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

我是否应该像 city, country 那样输入自由文本,然后使用 alike 根据该字符串进行过滤?

谢谢

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

WHERE city || ', ' || country ILIKE ?

如果你不这样做,你仍然可以尝试假设用户的自由格式位置信息table(你不清楚数据库架构):

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

分别

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

Here 是使用 java 脚本的国家和城市的完整列表。

用两个属性 countrystate 更改 location 属性,并使用前面的列表来填充它们。