我有两个课程:Forum
和Topic
。Forum
has_many Topic
s。
- 您如何获得(假设)5 个讨论最多的论坛?
- 你如何按日期限制它?例如,今天/本周讨论最多的等等。
谢谢
我有两个课程:Forum
和Topic
。Forum
has_many Topic
s。
谢谢
1. 您如何获得(假设)5 个讨论最多的论坛?
您可能可以执行以下操作:
Forum.where('id IN (?)', Topic.limit(5).count(:group => 'forum_id').map {|key, value| key })
2. 你如何按日期限制它?例如,今天/本周讨论最多的等等。
Forum.where('id IN (?)', Topic.where('date > ', 1.week.ago.to_s(:db)).limit(5).count(:group => 'forum_id').map {|key, value| key })
如果讨论最多的论坛是主题最多的论坛,则查询将是:
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)
最好的方法是在两个表中保留时间戳(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)