在rails中制作用户年龄的饼图

我的用户模型中有此function可计算用户年龄

def get_age now = Time.now.utc.to_date now.year - dob.year - ((now.month > dob.month || (now.month == dob.month && now.day >= dob.day)) ? 0 : 1) end 

我想要一个rails语句,它使用这个函数对用户产生查询并返回它们的年龄数。 然后将年龄分组在诸如[10以下,10-20之间等]的标签中

就像是:

  

其中get_age是用户模型中编写的函数。 注意:即使我将函数定义为self.get_age仍然无法正常工作

所以对于成千上万的用户,我肯定会在数据库中这样做。 虽然标签可能需要一些按摩,但您可以从这样的查询开始:

 User.group("date_trunc('year', age(dob))").count 

这将导致哈希条目看起来像这样:

 { "00:00:00" => 3, "1 year" => 5, "2 years" => 8, ... } 

然后,您可以根据需要进行重新标记并将年度结果分组到箱(例如10-20)中。 我不会尝试在您的视图中的所有行中执行此操作 – 我将此作为模型或专用查询对象上的方法。