我有一個has_many文章的用戶。我使用計數器緩存來存儲用戶發佈的文章數量。Rails Active Record - counter_cache僅返回給定時間段的記錄
class User < ActiveRecord::Base
has_many :articles
end
class Article < ActiveRecord::Base
belongs_to :user, :counter_cache => true
end
我使用下面的語法來找到曾發表文章最多的用戶:
User.order("articles_count desc").limit(50).all
我想要做的是檢查誰發表的大多數文章50個頂級用戶過去一個月。
我知道我能得到的最後一個月每個用戶發佈的,像這樣的文章的數量,但它只是不覺得很有效:
User.find_each do |user|
user.articles.where('created_at >= ?', 1.week.ago.utc).count
end
我試着用一些SQL查詢,沒有太多的運氣,他想知道也許有一種方法可以將存儲在我的counter_cache中的數據用於此目的?
感謝大衛。不知何故,我認爲可能有ActiveRecord的方式來實現它,但無論如何,你的建議比我的原始方法更好。 –