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 脚本的国家和城市的完整列表。
用两个属性 country
和 state
更改 location 属性,并使用前面的列表来填充它们。
为用户构建位置信息的最佳方式是什么?我需要能够按 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 脚本的国家和城市的完整列表。
用两个属性 country
和 state
更改 location 属性,并使用前面的列表来填充它们。