[英]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.