2

Railsは、created_at新しいレコードの列を追加して入力します。

を使用して、指定した時間枠内にレコードがある日数をカウントするにはどうすればよいですか?(注:レコードはカウントせず、日数をカウントします)。

たとえば、Postモデルがある場合、昨年のPostの日数を計算するにはどうすればよいですか?

4

1 に答える 1

4

あなたがルビーの方法を求めたので、ここにあります:

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
于 2012-06-01T02:21:26.390 に答える