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 は users モデルで記述された関数です。注:関数を 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) にグループ化できます。ビューでこれをすべて1行で実行しようとはしません-モデルまたは専用のクエリオブジェクトでこれをメソッドにします。

于 2013-11-05T20:26:22.073 に答える