首页 > 解决方案 > Rails ActiveRecord 选择按时间戳排序的不同记录

问题描述

在下面的数据表中:

在此处输入图像描述

我正在尝试从该表中选择基于 、 和 列不同itemable_iditemable_type记录user_id。我还想要按 . 排序的记录last_viewed_at。在 Rails 中,我已经能够使记录变得不同,但是我尝试的每一种方式总是获取记录 ID1而不是4for ThingType1that has itemable_id 32. 本质上,我试图最终得到的记录集是一个 ID 为 4、3 和 2 的行。我怎样才能有效地做到这一点?

标签: ruby-on-railspostgresqldistinct-on

解决方案


您可以使用group获取一组不同的记录,然后按asc或排序它们desc-

UserItemView.select(:user_id, : itemable_type, :itemable_id).group(:user_id, : itemable_type, :itemable_id).order(last_viewed_at: :desc)

推荐阅读