【发布时间】:2014-07-18 12:00:35
【问题描述】:
我正在使用 PublicActivity gem:https://github.com/pokonski/public_activity
我使用 PublicActivity 跟踪的所有模型都使用列 edition_id。而且我想知道如何通过该列确定范围,因为它是多态关系。
例如 PublicActivity 看起来像这样:
PublicActivity::Activity.limit(50)
+----+--------------+----------------+----------+------------+--------------------+------------+--------------+----------------+---------------------------+---------------------------+
| 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
我不确定如何甚至是否可以跨多个“可跟踪”类型加入、包含或预加载多态模型。
【问题讨论】:
-
你能解释一下你想要达到的目标吗?最终发布一个例子,说明你一开始有什么,最后你想要什么。另外,我在转储数据中没有看到
edition_id列 -
已更新以尝试更具体,谢谢...
-
你能把
PublicActivity::Activity.limit(10).joins(:trackable)时触发的SQL查询贴出来吗? -
Cannot eagerly load the polymorphic association :trackable我可以使用includes或preload但连接不起作用,我认为这是多态的,需要连接它使用的 4-5 个差异模型。跨度>
标签: ruby-on-rails ruby-on-rails-4 polymorphic-associations public-activity