Railsは、created_at
新しいレコードの列を追加して入力します。
を使用して、指定した時間枠内にレコードがある日数をカウントするにはどうすればよいですか?(注:レコードはカウントせず、日数をカウントします)。
たとえば、Postモデルがある場合、昨年のPostの日数を計算するにはどうすればよいですか?
Railsは、created_at
新しいレコードの列を追加して入力します。
を使用して、指定した時間枠内にレコードがある日数をカウントするにはどうすればよいですか?(注:レコードはカウントせず、日数をカウントします)。
たとえば、Postモデルがある場合、昨年のPostの日数を計算するにはどうすればよいですか?
あなたがルビーの方法を求めたので、ここにあります:
Post.where('created_at >= ?', 1.year.ago).map { |p| p.created_at.beginning_of_day }.uniq.size
アップデート
投稿モデルに次のものを入れることができます
def self.number_of_days
where('created_at >= ?', 1.year.ago).map { |p| p.created_at.beginning_of_day }.uniq.size
end
次に、コントローラーで次のようなことを行うことができます
@user.posts.number_of_days
ほとんどの作業をデータベースに委任するより効率的な方法は次のとおりです(MySQL、他の作業で機能するかどうかはわかりません)。
Post.where('created_at >= ?', 1.year.ago).group('DATE(created_at)').length