【发布时间】:2014-03-07 20:48:45
【问题描述】:
我正在跟踪以下表格:
Story (id, user_id, content)
Vote (id, user_id, story_id)
Flag (id, user_id, story_id)
etc..
带有活动表:
Activity (id, user_id,action, trackable_id, trackable_type)
关系表:
Relationship (id, follower_id, followed_id)
我目前正在获取用户关注的用户的活动,如下所示:
def get_activity_from_followers(current_user)
followed_user_ids = "SELECT followed_id FROM relationships
WHERE follower_id = :user_id"
where("user_id IN (#{followed_user_ids})",
user_id: user.id)
end
我的问题是,我如何获得可跟踪表(例如故事、投票、标志)属于您的活动。
所以现在我得到了类似的东西:
- “您正在关注的人”发布了一个故事
- “您关注的人”为故事投票
我还想得到类似的东西:
- “您未关注的人”为您的故事投票
- “您未关注的人”标记了您的故事
我该怎么做?谢谢。
【问题讨论】:
-
你考虑过使用scopes吗?范围封装活动记录查询或查询的一部分。范围是可组合的,因此您可以在模型中包含一些 where 子句,在另一个模型中包含一些常用的连接,并根据需要将它们组合在一起。
-
谢谢韦恩。这很有趣,在这种情况下我该如何使用它?
-
这就是我想写的答案,如果我有时间的话。为了解决这个问题,我需要创建一个带有项目模拟的 rails 项目。我不知道什么时候有时间尝试一下;同时,我希望该评论对您或其他回答者有用。
-
哦,我明白了。非常感谢韦恩 :)
-
您能帮我一个忙并发布您的类定义,仅包含关系吗?我绝对可以提供帮助。
标签: ruby-on-rails postgresql activerecord ruby-on-rails-4