首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PublicActivity gem与多态模型连接

如何使用PublicActivity gem与多态模型连接
EN

Stack Overflow用户
提问于 2014-07-18 12:00:35
回答 1查看 398关注 0票数 2

我使用的是PublicActivity gem:activity

我使用PublicActivity跟踪的所有模型都使用列edition_id。我在想,既然这是多态关系,我怎样才能用那一列进行范围分析。

例如PublicActivity看起来是这样的:

PublicActivity::Activity.limit(50)

代码语言:javascript
复制
+----+--------------+----------------+----------+------------+--------------------+------------+--------------+----------------+---------------------------+---------------------------+
| id | trackable_id | trackable_type | owner_id | owner_type | key                | parameters | recipient_id | recipient_type | created_at                | updated_at                |
+----+--------------+----------------+----------+------------+--------------------+------------+--------------+----------------+---------------------------+---------------------------+
| 1  | 42           | QuizMaster     | 6        | User       | quiz_master.update | {}         |              |                | 2013-04-12 17:33:14 +0100 | 2013-04-12 17:33:14 +0100 |
| 2  | 25           | Place          | 6        | User       | place.update       | {}         |              |                | 2013-04-12 17:42:42 +0100 | 2013-04-12 17:42:42 +0100 |
| 3  | 25           | Event          | 6        | User       | event.update       | {}         |              |                | 2013-04-12 17:45:08 +0100 | 2013-04-12 17:45:08 +0100 |
| 4  | 20           | QuizMaster     | 6        | User       | quiz_master.update | {}         |              |                | 2013-04-12 17:49:09 +0100 | 2013-04-12 17:49:09 +0100 |
| 5  | 20           | QuizMaster     | 6        | User       | quiz_master.update | {}         |              |                | 2013-04-12 17:50:51 +0100 | 2013-04-12 17:50:51 +0100 |
+----+--------------+----------------+----------+------------+--------------------+------------+--------------+----------------+---------------------------+---------------------------+

其中edition_id位于多态可跟踪关系上。

我想做的事情是:

PublicActivity::Activity.limit(50).includes(:trackable)# where trackable edition = 1

我不确定如何(甚至可能)加入、包括或预加载多个“可跟踪”类型的多态模型。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-19 12:25:56

我认为这在SQL中是不可能的,因为它是多态的,但是您可以很容易地使用ruby来做一些事情。

代码语言:javascript
复制
PublicActivity::Activity.limit(50).select {|c| c.trackable.edition_id = 1 }

它不会像SQL查询那样高效,但是使用Rails preload可能足够好,这取决于您要获取的记录的数量。

代码语言:javascript
复制
PublicActivity::Activity.limit(50).preload(:trackable).select {|c| c.trackable.edition_id = 1 }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24824529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档