公共活动按创建时间选择唯一外键

时间:2014-04-25 04:26:17

标签: ruby-on-rails activerecord public-activity

我想在我的应用中查询活动对象。我正在使用public_activity gem,我有一个与几个模型相关的活动列表,我想列出最近的独特活动。

基本上我想查询特定跟踪的最新活动。我们假设我跟踪了相似的按钮,而ID 29ID=29。我想查询跟踪@activities = PublicActivity::Activity.order("created_at desc").where(owner_id: current_user.id) 和其他跟踪ID的最新(一个)实例。我不太了解对rails的查询。现在,这是我唯一显示所有活动的行:

id  activity_id description created_on
1   3           Like        yesterday
2   3           Unlike      two days ago
3   6           Comment     yesterday
4   7           Review      yesterday
5   7           Review      two days ago

我们说我的活动表如下:

@activities

我想将每个活动ID的最新条目提取到id activity_id description created_on 1 3 Like yesterday 3 6 Comment yesterday 4 7 Review yesterday 变量中,如下所示:

public_activity

{{1}}是否有解决方法?

1 个答案:

答案 0 :(得分:0)

您可以使用groupselect的组合来完成此任务。

PublicActivity::Activity.
  select("MAX(created_at) as when, trackable_type").
  group("trackable_type").
  where(owner_id: current_user.id)

这是输出

+-------------------------+-------------------------+
| trackable_type          | when                    |
+-------------------------+-------------------------+
| Report                  | 2015-11-27 20:25:31 UTC |
| QuickAnswer             | 2016-01-04 23:36:21 UTC |
| Comment                 | 2015-10-23 15:35:32 UTC |
| TakenExam               | 2016-01-04 23:46:11 UTC |
| SeenVideo               | 2015-08-23 21:27:58 UTC |
| Provider                | 2015-09-17 23:47:40 UTC |
| AnswerForRecommendation | 2015-08-18 15:13:03 UTC |
| Subscription            | 2015-08-24 08:37:08 UTC |
+-------------------------+-------------------------+