我正试着先按日期将帖子(称为主题)分组,这样最新的帖子就会排在首位。在那之后,我想在上面显示对那个日期的最高投票。
这是我的控制器: topics_controller.rb
@topics = Topic.tally.group(created_at: :desc).order('vote_count')但我的输出是这样的,

我要显示第28条、第27条、然后第26条。我在这里做错什么了?
更新:这是一个我希望我的帖子页面看起来的示例。
9月28日邮报5,10投4,7投
9月27日邮报3,17投2票,15投
9月26日邮报1,26
发布于 2014-09-28 17:26:04
SQL的GROUP (AKA group with ActiveRecord)并不像您认为的那样。你说:
我正试着先按日期将帖子(称为主题)分组,这样最新的帖子就会排在首位。
但是您不使用GROUP BY对事物进行排序,而是使用GROUP BY对行进行分组,从而使聚合操作(例如count、sum、avg、.)可以折叠分组行以生成某种类型的摘要。
如果你想订购商品,那就订购它们:
@topics = Topic.tally.order('created_at desc, vote_count asc')当然,由于您的created_at时间戳可能是唯一的(或者几乎是唯一的),因此vote_count实际上将被忽略,因为不会有任何需要中断的created_at联系。您说要按日期排序,但是created_at是时间戳(即日期和日期)。如果确实希望按日期排序,那么将created_at转换为日期:
@topics = Topic.tally.order('cast(created_at as date) desc, vote_count asc')https://stackoverflow.com/questions/26084353
复制相似问题