项目中遇到了许多区间值得情况,比如收入区间,年龄区间。 目前我的做法是收入区间预先划分好,然后存数字,年龄区间因为要经常变动,所有存最大值和最小值。 有没有什么比较好的做法?
为什么区间值会经常变动?一般不都是业务开始就需要确认的吗?设成枚举值就好。
#1 楼 @nickcen 呃,可能表述值不清楚,年龄区间是用户自己填写的,交友应用的用户择偶需求。自然要根据这个需求来直接筛选
较好的做法指的是什么?是说节省空间?减少 sql 查找速度?方便编程?
#3 楼 @yfractal 这些都是衡量"好"的指标啊,具备任意一个都算是好的吧
主要是想知道楼主要哪里好啊。。。
不知道这样是否符合楼主的要求? model 那块。可以用 ruby 的 Range,比如工资就对应一个 range。然后再定义一些方法,比如说大于,小于,包含(这些估计 ruby 都有)。
数据库。 比如工资。一个上限,一个下线。model 那 def 一个工资的 getter(不知道这个是不是虚属性。。。),返回一个 range。然后是对应的 setter,setter 可以直接设置上限,下线,这样 save 的时候应该就可以直接 save(没怎了解 rails 如何 save。。。)。
查询的话,可以“翻译”成大于小于,然后进行查询。sql 应该都支持。
#5 楼 @yfractal 这些值都是要存到数据库的,我现在的做法就是两个字段,一个 max,一个 min,但是我本能的感觉这样做太粗俗了,在外面再做一次封装,封装成 range 倒也是个不错的选择. 还有,6\7\8楼是啥情况。
#9 楼 @jzlikewei 觉得怎么都要有 range 这个结构。。。或者存个 string,然后再封装一层?
感觉网络问题,我点了一下,结果发了 4 个。。。吓得好赶紧删了。。。
#10 楼 @yfractal 嗯,目前也只能这样了,看看其他人有木有更优雅些的做法
#11 楼 @jzlikewei
#9 楼 @jzlikewei 业务就是这样,没什么俗的。 要么改业务,不要让用户做那么选择,直接给用户选择区间段,比如 年龄段选择: 少年(12~18) 青年(19~35) 中年(36~50) 老年(......)