微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐