2016-02-28 29 views
1

我期望通過在模型上分組方法來獲得基於.count的格式。
我已經試過是沿用mysql方法計算日期時間,使用rails方法

Model.all.group(:age_at_x).count 

Model.all.group_by { |v| v.age_at_x }.count 

線隨着age_at_x模型中定義。我知道這試圖在MySQL中用一種方法進行分組,但我似乎無法想出實際上由該方法分組?

def age_at_x 
    date = Time.new(2016, 6, 25) 
    dob = self.birth 
    date.year - dob.year - ((date.month > dob.month || (date.month == dob.month && date.day >= dob.day)) ? 0 : 1) 
end 

我正在計算不同的年齡,看看每個年齡有多少 - 而不是年齡的數量。

在未來

此外,通過18+數和18

+0

,那麼你應該用你所有的條件構建SQL請求... –

+0

這就是我雖然自己 - 我只是確保,沒有任何其他方式(更容易閱讀的方式)。 @OlegSobchuk –

回答

0

如果我理解你的問題下,你正試圖以計算diferentes年齡段的人,嘗試:

Model.select(:birth).distinct.count 
+0

但是:誕生是整個日期。任何方式輕鬆選擇一年?這只是輸出不同日期的數量。我需要知道每個日期有多少。將它改爲'Model.group(「YEAR(birth)」)。distinct.count',它起作用了! –

+0

如果你正在記錄'birth'而不是'year','month'和'day',那麼你必須這樣做:'Model.select(:birth).distinct.uniq {| birth | birth.getYear} .size' ..或者實現一個SQL查詢 –