marcamillion
marcamillion

Reputation: 33755

How do I do a where OR on two columns in the same table?

I have a membership model, and I want to search OR on two columns....not sure how to do it.

I tried this:

u1.all_memberships.where(inviter: u2, invited: u2)
  Membership Load (6.8ms)  SELECT "memberships".* FROM "memberships"  WHERE (memberships.user_id = 1 OR memberships.invited_id = 1) AND "memberships"."user_id" = 3 AND "memberships"."invited_id" = 3
=> []

But note the 2 AND on both queries, when ideally what I would like to do is literally just replace all the ANDs with ORs.

So I would love if the query looked something like this:

Membership Load (6.8ms)  SELECT "memberships".* FROM "memberships"  WHERE (memberships.user_id = 1 OR memberships.invited_id = 1) OR (memberships.user_id = 3 OR memberships.invited_id = 3)

Assuming that my modification is syntactically correct SQL ofcourse.

How do I do that with a where clause? Is that possible?

Upvotes: 0

Views: 40

Answers (1)

Arsen
Arsen

Reputation: 10951

I expect It can help

where("inviter_id = ? OR invited_id = ? ", u2.id, u2.id)

DRYer solution

where("inviter_id = :uid OR invited_id = :uid ", uid: u2.id)

Upvotes: 2

Related Questions