我正在使用公共活动来创建Feed,我想过滤这些活动。我不想向current_user
展示自己的活动,所以我有:
@activities = PublicActivity::Activity.where.not(owner_id: current_user.id)
这很有效。我想添加第二个过滤器,它只显示属于用户current_user
的活动。
我可以使用以下所有用户:
@users = current_user.following
我的问题是:如何通过检查owner_id
是@users
中包含的用户的ID来过滤活动?
编辑:
activities
表:
create_table "activities", force: :cascade do |t|
t.integer "trackable_id"
t.string "trackable_type"
t.integer "owner_id"
t.string "owner_type"
t.string "key"
t.text "parameters"
t.integer "recipient_id"
t.string "recipient_type"
t.datetime "created_at"
t.datetime "updated_at"
t.boolean "read", default: false
t.string "origin"
end
答案 0 :(得分:2)
尝试以下方法:
Activity.joins(:owner).where.not(
users: {id: current_user.id}
).joins(owner: :followings).where(
followings: { follower_id: current_user.id }
)
这转换为所有不属于current_user
的活动,但DO属于用户,后跟current_user
。
您可能需要替换适当的值。