Среднее время между 2 датами рубина - PullRequest
1 голос
/ 03 августа 2011

Я хочу рассчитать среднее время (в днях) между 2 датами.Я хочу знать для каждого пользователя количество дней, прошедших с момента их присоединения, и получить среднее значение.

(Date.today  -  User.first.created_at.to_date).to_i

Отлично работает для данного пользователя.Теперь я хочу просмотреть всех своих пользователей и получить среднее значение.Как этого добиться?

Ответы [ 2 ]

0 голосов
/ 05 августа 2011

Или вы можете попробовать это:

User.all.sum { |user| (Time.now - user.created_at) / 1.day }.to_i / User.count

Кстати, если вы расширите Ruby's Array примерно так:

class Array
  def avg(&block)
    sum(&block).to_i / count
  end
end

вы можете сделать хорошую и короткую версию:

User.all.avg { |user| (Time.now - user.created_at) / 1.day }
0 голосов
/ 03 августа 2011

Вы можете попробовать это:

User.all.map{|u| (Date.today - u.created_at.to_date).to_i}.sum/User.count
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...