0

Public Activity Gem Railscast Vid について説明します。( http://railscasts.com/episodes/406-public-activity )

すべて正常に動作しますが、Current_User に属する recipient_id を含むものを除いて、実行されたすべての特定のアクティビティを見つけられるようにしたいと考えています。

すべてのユーザーが実行したすべてのアクティビティを見つけることができるメソッド working(activities) があります

そして、この 2 番目の方法 (通知) は、recipient_id が Current_User と等しいすべてのアクティビティを検索します

コントローラ

**(finds all activities)**
def activities
  @title = "Activities"
  @activities = PublicActivity::Activity.order("created_at desc").where(owner_id: current_user.followed_users.all, owner_type: "User") 
  @user = User.find_by_username(params[:id])
  render 'activities'
end

**(find all notifications where recipient_id is Current_User)**
def notifications
  @title = "Notifications"
  @activities = PublicActivity::Activity.order("created_at desc").where(recipient_id: current_user, recipient_type: "User") 
  @user = User.find_by_username(params[:id])
  render 'notifications'
end

受信者 ID が current_user と等しい方法 2 (通知) で見つかったアクティビティを除いて、最初のメソッド (アクティビティ) がすべてのアクティビティを見つけるようにそれらを組み合わせる方法はありますか?

私はこれがとても簡単にできることを知っています....私はそれを理解することができません。助けてください....Railsの初心者:D

私の現在のDBは、このようにすべてを検索/保存します

#<PublicActivity::Activity id: 108, trackable_id: 133, trackable_type: "Relationship",
owner_id: 1, owner_type: "User", key: "relationship.create", parameters: {}, 
recipient_id: 1, recipient_type: User, created_at: "2013-06-16 07:37:28", 
updated_at: "2013-06-16 07:37:28">
4

1 に答える 1

3

カスタム SQL クエリを使用する必要がありますが、次のような方法で問題を解決できます。

@activities = PublicActivity::Activity.where("recipient_id != ?", current_user.id).where(recipient_type: "User", owner_id: current_user.followed_users.all, owner_type: "User")
于 2013-06-16T22:58:00.377 に答える