0

我的用户模型中有这个计算用户年龄的函数

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 岁等]

就像是:

<%= pie_chart User.group("get_age"), {library: {title: "User's Age"}} %>

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

4

1 回答 1

1

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

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

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

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

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

于 2013-11-05T20:26:22.073 回答