1

私は PublicActivity gem を使用しており、2 つの "where" クエリを OR で結合したいと考えています。各クエリは個別に機能します。

@activities = PublicActivity::Activity.where(owner_id: current_user.friend_ids, owner_type: "User")

@activities = PublicActivity::Activity.where(recipient_id: current_user.id, recipient_type: "User")

目標は次のとおりです。

owner_id が current_user.friend_idsまたはrecipient_id が current_user.id であるアクティビティを返します。私はこれを試しましたが、うまくいきませんでした:

@activities = PublicActivity::Activity.where("owner_id LIKE ? OR recipient_id LIKE ?', current_user.friend_ids, current_user.id)

私はすでに squeel gem と where(...).or.where(...) を試しました

助言がありますか?

4

2 に答える 2

0

like OR like間違った結果、誤検知などで有名です。

使用方法:

@activities1 = PublicActivity::Activity.where(owner_id: current_user.friend_ids, owner_type: "User")

@activities2 = PublicActivity::Activity.where(recipient_id: current_user.id, recipient_type: "User")

@activities=(@activities1+@activities2).sort.unique

両方のレコード セットが異なるため、効果的に区別されます。(.sort.uniq を追加しただけです)

于 2013-11-09T18:14:38.017 に答える
0

これはうまくいきました:

where("owner_id IN (?) OR recipient_id IN (?)', current_user.friend_ids, current_user.id)
于 2013-11-09T19:25:29.973 に答える