2016-11-04 2 views
1

Я пытаюсь отобразить возраст учетной записи, получив ее, когда она была сделана, и минуя ее на текущую дату.Как определить дату учетной записи в Ruby on Rails

Вот что я до сих пор:

def age 
    created = user.created_at 
    today = Date.today 
    age = created - today 
end 

Это в моей модели, я не уверен, смогу ли я буквально отнимают дату, дату или, если мой синтаксис совершенно неправильно. Любая помощь вообще была бы очень оценена!

ответ

0

Я думаю, что большинство из них в порядке, за исключением того, что вы должны работать с тем же классом.

user.created_at является ActiveSupport :: TimeWithZone

Date.today является дата (без времени)

Если вы Time.now - user.created_at, вы должны получить годную к употреблению номер (в секунд).

0

created_at является DateTime, так что вы должны установить today быть DateTime, а

today = Time.now 

Разница будет секунд так, чтобы получить количество дней,

(today - created_at)/60/60/24 

Вы должны также рассмотреть драгоценный камень TimeDifference, который облегчает вычисление разностей между временами.

https://github.com/tmlee/time_difference

0

Что-то вроде ...

def age_in_hours(user) 
    origin = user.created_at 
    today = Time.now 
    hours_from = ((today - origin)/3600).round 
end 
1

Я думаю, есть два пути решения Вашего дела: 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.

Смежные вопросы