2011-12-08 7 views
20

過去7日間に作成されたレコードのみを選択するには、以下のクエリをどのように変更できますか?過去7日間に作成されたレコード件数

self.favorites.count 

この機能は、私のUserモデルに位置しています。

def calculate_user_score 
    unless self.new_record? 
     self.score = (self.links.count * 5) + (self.favorites.count * 0.5) 
    end 
    end 

答えて

40

あなたはこのようwhere -condition追加することができます。

self.favorites.where('created_at >= ?', 1.week.ago).count 

そして、あなたのcalculate_user_score方法について、あなたはおそらく同様にlinksのためにそれを行うにしたい:

def calculate_user_score 
    unless new_record? 
    self.score = (links.where('created_at >= ?', 1.week.ago).count * 5) + 
     (favorites.where('created_at >= ?', 1.week.ago).count * 0.5) 
    end 
end 
1
self.links.where("created_at > ?", Time.now-7.days).count 
7

モデルにスコープを追加することをお勧めします。

class User < ActiveRecord::Base 

    scope :recents, where("created_at > ?", Time.now-7.days) 

end 

その後、あなたはこのコードが機能していないようだ4+

Railsでは

self.favorites.recents.count 
+0

素敵な分け合い –

4

を行うことができます。

"created_at > ?", Time.now-7.days 

私は次のように試してみました:

scope :recent, -> { where("DATE(created_at) > ?", (Date.today).to_time - 7.days) } 
関連する問題