簡體   English   中英

簡單的活動記錄查詢

[英]Simple active record query

我覺得這個問題很容易,但是也許我只是想得太過分了。

我有一個Active Record查詢,看起來像這樣:

@activities = PublicActivity::Activity.includes(:owner, :trackable).where(owner_id: current_user.followed_users, owner_type: "User", kind: "Activity")

這很好用,但是我想將current_user添加為可能的:owner 因此,我嘗試了許多選擇,包括:

@activities = PublicActivity::Activity.includes(:owner, :trackable).where(owner_id: [[current_user.followed_users], [current_user]], owner_type: "User", kind: "Activity")
@activities = PublicActivity::Activity.includes(:owner, :trackable).where(owner_id: [current_user.followed_users, current_user], owner_type: "User", kind: "Activity")

但是我遇到了類似的錯誤:

Cannot visit User::ActiveRecord_Associations_CollectionProxy

任何人都可以發現我犯的錯誤...謝謝

current_user.followed_users是一個ActiveRecord_Associations_CollectionProxy ,但您只需要ID,就像這樣current_user.followed_users.collect(&:id)

使用您的示例,完整查詢如下所示:

@activities = PublicActivity::Activity.includes(:owner, :trackable).where(owner_id: [[current_user.followed_users.collect(&:id)], [current_user.id]], owner_type: "User", kind: "Activity")

您可以將current_user追加到followed_users數組中。 嘗試這個:

allowed_users = current_user.followed_users << current_user
@activities = PublicActivity::Activity.includes(:owner, :trackable).where(owner_id: allowed_users, owner_type: "User", kind: "Activity")

或者,您可以僅將current_user作為一個元素數組添加到其followed_users

allowed_users = current_user.followed_users + [current_user]
@activities = PublicActivity::Activity.includes(:owner, :trackable).where(owner_id: allowed_users, owner_type: "User", kind: "Activity")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM