2012-08-28 60 views
3

我有一个用户模型与质量字段在里面。该字段的数据类型是float。轨活动记录分组与范围

现在我想组所有用户根据质量范围如下

[65 - 75],[75 - 85], [85 - 95] and [95 - 100] 

注:我希望所有用户提供优质的形式65在一个组75和75- 85中的另一组。

我如何用ActiveRecord实现这一点。

感谢

+0

我想要一个查询,可以将用户按照上面给出的范围进行分组。 – Gagan

回答

0

那么你可以使用ActiveRecordgrouphaving功能是这样的:

Model.select(:quality).group(:quality).having("quality > 65 AND quality < 75") 
Model.select(:quality).group(:quality).having("quality > 75 AND quality < 85") 
Model.select(:quality).group(:quality).having("quality > 85 AND quality < 95") 
Model.select(:quality).group(:quality).having("quality > 95 AND quality < 100") 
+1

如何将所有这些合并到一个查询中? – Gagan

+0

好吧,如果你想把他们分组在不同的组中,你不能只做一个查询。 – MurifoX

0
User.where(:quality => (65..75)) 
User.where(:quality => (75..85)) 
User.where(:quality => (85..95)) 
User.where(:quality => (95..100)) 

或者,如果你想有一个单一的查询,你有3种选择:

  • 使用字符串形式

    User.where("(quality >= 65 AND quality <= 75) OR (quality >= 75 AND quality <= 85) OR (quality >= 85 AND quality <= 95) OR (quality >= 95 AND quality <= 100)").group(:quality) 
    
  • 编写与SQL or子句或

  • 使用ARel宝石。