重构 区间应当如何储存

jzlikewei · 2014年06月27日 · 最后由 yfractal 回复于 2014年06月28日 · 7612 次阅读

项目中遇到了许多区间值得情况,比如收入区间,年龄区间。 目前我的做法是收入区间预先划分好,然后存数字,年龄区间因为要经常变动,所有存最大值和最小值。 有没有什么比较好的做法?

为什么区间值会经常变动?一般不都是业务开始就需要确认的吗?设成枚举值就好。

#1 楼 @nickcen 呃,可能表述值不清楚,年龄区间是用户自己填写的,交友应用的用户择偶需求。自然要根据这个需求来直接筛选

较好的做法指的是什么?是说节省空间?减少 sql 查找速度?方便编程?

#3 楼 @yfractal 这些都是衡量"好"的指标啊,具备任意一个都算是好的吧

主要是想知道楼主要哪里好啊。。。

不知道这样是否符合楼主的要求? model 那块。可以用 ruby 的 Range,比如工资就对应一个 range。然后再定义一些方法,比如说大于,小于,包含(这些估计 ruby 都有)。

数据库。 比如工资。一个上限,一个下线。model 那 def 一个工资的 getter(不知道这个是不是虚属性。。。),返回一个 range。然后是对应的 setter,setter 可以直接设置上限,下线,这样 save 的时候应该就可以直接 save(没怎了解 rails 如何 save。。。)。

查询的话,可以“翻译”成大于小于,然后进行查询。sql 应该都支持。

6 楼 已删除
7 楼 已删除
8 楼 已删除

#5 楼 @yfractal 这些值都是要存到数据库的,我现在的做法就是两个字段,一个 max,一个 min,但是我本能的感觉这样做太粗俗了,在外面再做一次封装,封装成 range 倒也是个不错的选择. 还有,6\7\8楼是啥情况。

#9 楼 @jzlikewei 觉得怎么都要有 range 这个结构。。。或者存个 string,然后再封装一层?

感觉网络问题,我点了一下,结果发了 4 个。。。吓得好赶紧删了。。。

#10 楼 @yfractal 嗯,目前也只能这样了,看看其他人有木有更优雅些的做法

#9 楼 @jzlikewei 业务就是这样,没什么俗的。 要么改业务,不要让用户做那么选择,直接给用户选择区间段,比如 年龄段选择: 少年(12~18) 青年(19~35) 中年(36~50) 老年(......)

需要 登录 后方可回复, 如果你还没有账号请 注册新账号