Когда я использую .cweek
, он возвращает недели по коммерческим неделям.Так, для моих недельных графиков, если я выберу start_date
, который начинается, например, в четверг, данные группируются не по неделям с четверга по среду, а с четверга по воскресенье.
Знаете ли вы способсказать cweek, что конечный день недели равен выбранной дате, а не воскресению?
Я бы хотел что-то подобное, когда у вас есть объект даты, и вы установили date.beginning_of_week(start_day = :thursday)
?
Большое спасибо!
РЕДАКТИРОВАТЬ:
Пример:
customer_signup_chart = {
type: 'line',
data: [],
label: 'blabla'
}
users = User
.where('created_at > :start_date AND created_at < :end_date',
start_date: start_date.beginning_of_day,
end_date: end_date.end_of_day)
.select(:created_at, :typology)
start_day = start_date.strftime('%A').downcase.to_sym
datasets = { labels: (start_date.to_datetime..end_date.to_datetime).map {|date| date.beginning_of_week(start_day = start_day).strftime("From %d/%m to #{date.end_of_week(start_day = start_day).strftime('%d/%m')}")}.uniq}
users = users.group_by {|u| u.created_at.to_date.cweek}
loop do
customer_signup_chart[:data] << (users[start_date.to_date.cweek] ? users[start_date.to_date.cweek].count {|u| u.typology == 'client'} : 0)
start_date += 1.week
break if start_date > end_date
end
Возвращает users group_by created_at
на той же неделе, но для Ruby,эта же неделя с понедельника по воскресенье, а не с start_date
до start_date - 1.day
.
Я не знаю, понятнее ли это сейчас ..
РЕДАКТИРОВАТЬ 2:
Ну, это заставляет меня добавлять драгоценный камень только для четырех графиков, но я собираюсь использовать groupdate, это, вероятно, самый простой способ сделать это ..