Rails获取仅涉及current_user的活动源

时间:2013-12-10 21:22:05

标签: ruby-on-rails ruby notifications ruby-on-rails-4

我在rails应用程序上使用public_activity gem来获取所有current_users关注者活动。它工作得很好,但我更愿意只获得与current_user相关的活动,因此它更像是一个Notification系统而不仅仅是Activities。

以下是我目前在活动控制器中的内容

@activities_all = PublicActivity::Activity.order("created_at desc").where(owner_type: "User", owner_id: current_user.followed_users.map {|u| u.id}).all
@activities = @activities_all.group_by { |t| t.created_at.beginning_of_day }

如前所述,这给出了current_user的关注者所做的所有活动(比如在帖子上创建/评论)。我更喜欢它,如果我可以让它工作在我的粉丝与我的帖子互动的所有活动,等等。所以当用户评论和评论在我的帖子上时,我希望它成为@activities的一部分

乍一看,我认为这是另一个查询我无法弄清楚查询(如果查询是正确的方法)。

如果有帮助,这里有一些前端代码

<% @activities.sort.each do |day, activities| %>
  <h6><%= day.strftime("%B %d") %></h6>
    <% for activity in activities %>
      <% if activity.trackable %>
        <div class="activity">
          <p>
            <%= activity_user_image(activity.owner) %>
            <%= activity_user_name(activity.owner) if activity.owner %>
            <%= render_activity activity %> 
            <span><%= activity.created_at.strftime("%I:%M %p") %></span>
          </p>
        </div>
     <% end %>
  <% end %>
<% end %>

感谢大家的帮助。节日快乐

2 个答案:

答案 0 :(得分:1)

如果其他人在路上遇到这个问题,我找到了答案

首先,我为每项活动添加了收件人。

if @comment.save
  @comment.create_activity :create, owner: current_user, recipient: @design.user
end

然后我在活动中添加了另一个查询

@activities_all = PublicActivity::Activity.order("created_at desc").where(recipient_id: current_user).where("owner_id not in (?)", current_user).all

答案 1 :(得分:0)

不确定你的人际关系,但这样的事情应该有效:

@user_activities = PublicActivity::Activity.order("created_at desc").where(owner_type: "User", owner_id: current_user.id).all