ruby-on-rails – Rails活动从多态跟踪中提供

我正在跟踪以下表格:

Story (id,user_id,content)
Vote  (id,story_id)
Flag  (id,story_id)
etc..

有活动表:

Activity (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

我的问题是,我如何获得可跟踪表格(例如故事,投票,旗帜)所属的活动.
所以现在我得到的东西是这样的:

>“你关注的人”发布了一个故事
>“你跟随的人”投了一个故事

我也希望得到这样的东西:

>“你不跟随的人”投了你的故事
>“你不跟随的人”标记了你的故事

我该怎么做?谢谢.

解决方法

我建议你有以下类定义和关联:

# User 
class User  :trackable
end

# Flag  (id,story_id)
class Flag  :trackable
end

# with an activity table:
# Activity (id,trackable_type)
class Activity  true
end

# The relationship table:
# Relationship (id,following_id)
class Relationship  "User"
  belongs_to :following,:class_name => "User"
end

现在,让我们找到您关注的用户的活动:


# List activities of my followings
Activity.where(:user_id => current_user.followings)

列出我的活动

current_user.activities

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...