我試圖顯示一個帳戶的年齡,通過獲取它的時間,並在當前日期使用它。我如何確定在Ruby on Rails帳戶的日期
這是我到目前爲止有:
def age
created = user.created_at
today = Date.today
age = created - today
end
這是在我的模型,我不知道如果我可以從字面上日期帶走的日期,或者如果我的語法是完全錯誤的。任何幫助都將非常感謝!
我試圖顯示一個帳戶的年齡,通過獲取它的時間,並在當前日期使用它。我如何確定在Ruby on Rails帳戶的日期
這是我到目前爲止有:
def age
created = user.created_at
today = Date.today
age = created - today
end
這是在我的模型,我不知道如果我可以從字面上日期帶走的日期,或者如果我的語法是完全錯誤的。任何幫助都將非常感謝!
我認爲大部分情況都可以,除非你必須使用同一個班級。
user.created_at是的ActiveSupport :: TimeWithZone
Date.today是一個日期(沒有時間)
如果你Time.now - user.created_at,你應該得到一個可用的數字(以秒)。
created_at
是一個DateTime,那麼你應該設置today
是一個日期時間以及
today = Time.now
區別將是秒鐘,這樣得到的天數,
(today - created_at)/60/60/24
你也應該考慮TimeDifference gem有助於計算時間之間的差異。
喜歡的東西...
def age_in_hours(user)
origin = user.created_at
today = Time.now
hours_from = ((today - origin)/3600).round
end
我認爲,有兩種方法可以解決你的情況: 1)如果你只需要年/天/等,例如,年,你並不需要定義變量:
def age
Time.now.year - Time.at(@user.created_at).year #Time.at() I use there, cause, at Default rails set this field like timestamp, if you was changed this, just remove Time.at
end
2.如果你想獲得全面的信息,如年,日期和時間,你可以不喜歡它:
def age
created_at = Time.at(@user.created_at)
today = Time.now
{
years: (today.year - created_at.year),
months: (today.month - created_at.month),
days: (today.day - created_at.day),
hours: (today.hour - created_at.hour)
}
end
這裏我用@user
因爲它通常使用的方法
def set_user
@user = User.find(params[:id] #for example
end
您也可以定義方法age
像def age(user)
和下次使用user.created_at
。