1

月を渡し、前の月を動的に照会できるメソッドを構築しようとしています。

total_churn(month)
   last_month = month - 1
   companies = Company.where("created_at BETWEEN '#{last_month}' AND '#{month}')
   return companies.count
 end

Ruby on Railsを使用して先月を動的に決定できるように、メソッド「月」を渡すにはどうすればよいですか? ありがとう

4

3 に答える 3

2
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 つの日付を指定する必要があります (それらの日付が最初の日付であっても)。

于 2013-04-02T04:37:33.127 に答える