如何在Rails查询中设置多态对象的条件

时间:2010-12-28 21:22:27

标签: mysql sql ruby-on-rails

我为我的网站建了一个基本的新闻源。我使用了一个名为“活动”的表,它与许多其他对象(即评论,事件,状态帖等)具有多态性。

在活动对象中,我包含几个字段:

  • 用户ID(针对发起操作的人)
  • 目标类型(即评论,事件,状态)
  • 目标ID(上面包含的特定型号的ID)
  • 操作类型的代码(我用它来确定如何显示)
  • 行动日期/时间

我能够在网站主页上成功查询并显示完整的Feed。

我想在每个用户页面上显示一个Feed,但这并不容易。我不能简单查询User ID = x的所有Activity项。原因是某些动作可能与用户有关,即使它们不是由用户发起的。例如,如果有人在您的页面上发表评论,则该活动的用户ID将是其他人,而不是您的。但是我仍然想在你的页面上显示这个动作。

换句话说,我需要以某种方式运行一个查询:如果它是由UserX发起的,则检索此活动项,或者它是否与UserX的相关对象进行多态链接。

我一直在尝试所有类型的东西,但无济于事。谷歌没有太多关于这样的事情。也许我以完全错误的方式解决了这个问题?我是否应该在Activity对象中包含所有相关的用户ID,即使我正在复制数据?或者我可以运行哪种查询,能够处理多态相关的所有不同模型?

0 个答案:

没有答案