My suggestion: accept a date rather than a month.
total_churn(date)
month_previous = date - 1.month
companies = Company.where("created_at BETWEEN ? AND ?, '#{month_previous}', '#{date}')
return companies.count
end
Current month:
Time.now.month
Date.today.month
Time or day one month ago:
(Time.now - 1.month).month
(Date.today - 1.month).month
...also equivalent to:
Time.now.month - 1
Date.today.month - 1
Previous month for any given date:
@date - 1.month
月の数字だけでなく、日付を受け入れる方法を個人的に構築します。created_at フィールドに日付が格納されている限り、クエリを実行するには 2 つの日付を指定する必要があります (それらの日付が最初の日付であっても)。