我有兩個類:Forum
和Topic
。 Forum
has_many Topic
s。在rails中獲得大多數討論的論壇
- 你如何得到(讓我們假設)5最討論的論壇?
- 你如何限制日期?例如,這一天/周等
感謝
我有兩個類:Forum
和Topic
。 Forum
has_many Topic
s。在rails中獲得大多數討論的論壇
感謝
1.查詢你如何獲得的(假設可以)5個最disscused論壇?
你可能能夠做這樣的事情:
Forum.where('id IN (?)', Topic.limit(5).count(:group => 'forum_id').map {|key, value| key })
2.如何通過日期限制呢?例如,大多數disscused這天/周等
Forum.where('id IN (?)', Topic.where('date > ', 1.week.ago.to_s(:db)).limit(5).count(:group => 'forum_id').map {|key, value| key })
最好的辦法是最disscused保持兩個表中的時間戳(created_at和的updated_at)。並在主題發生某些活動時更新它們。
步驟:
timestamps
在兩個表。after_save
回調 在Topic
模型,更新updated_at
的父論壇。order by updated_at desc
。class Topic
def after_save
self.forum.touch
end
end
然後運行像 Forum.order("updated_at desc").limit(5)
如果討論最多的論壇是一個最主題,查詢將是:
Forum.joins(:topics).group("forums.id").order("COUNT(*) DESC").limit(5)
五個論壇與最大上週開放話題數量:
Forum.joins(:topics)
.where("topics.created_at > ?", 1.week.ago)
.group("forums.id")
.order("COUNT(*) DESC")
.limit(5)
很好,謝謝你的隊友! –
這實際上比我的方式更好,它只會觸發一個查詢。 –
這並不能給你討論最多的論壇,而是最近討論過的論壇。 –