내 모델에서 일부 데이터를 얻고을 사용 .count
하므로 결과적으로 해시 범위가 제공됩니다.
where(:created_at => start_date.beginning_of_day..Time.zone.now.end_of_day).
group("date(applicants.created_at)").count
출력은 다음과 같습니다.
{"2015-10-06"=>1, "2015-07-09"=>2, "2015-07-13"=>3, "2015-07-14"=>2, "2015-08-14"=>3, "2015-08-27"=>1}
문제는 이제 범위 사이의 모든 누락 된 날짜에 대해 날짜와 0 값을 입력해야한다는 것입니다. 그러나 그것은 해시이기 때문에 데이터를 검색하는 데 어려움을 겪고 있습니다.
지금까지 내가 가진 것은 범위의 날짜를 찾지 못했습니다. 이제까지.
def dates_chart_series(orders, start_date, end_date)
orders_by_day = orders
.where(:created_at => start_date.beginning_of_day..Time.zone.now.end_of_day)
.group("date(applicants.created_at)")
.count
puts orders_by_day
(start_date.to_date..end_date.to_date).map do |date|
puts orders_by_day.select { |key, value| key == date }
puts date
end.inspect
end
위의 코드는 객체 (또는 객체 배열)가 반환되는 RailsCast에서 가져 왔습니다. 해시가 아닙니다. 나는 그것을 사용하여 적응하려고 노력했지만 .select
운이별로 없습니다.
어떤 도움을 주시면 감사하겠습니다.
result = (start_date.to_date..end_date.to_date).each_with_object({}) do |date, hash|
hash[date] = orders_by_day.fetch(date.to_s, 0)
end
각 날짜를 키로 사용하여 새 해시를 반환하고 날짜가 없으면 기본값으로 0을 반환해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다