2015-11-04 60 views
0

我有一个membership模型,我想在两列搜索OR ....不知道该怎么做。如何在同一个表中的两列上执行OR操作?

我尝试这样做:

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 
=> [] 

但需要注意的2 AND两个查询,当理想我想这样做是字面上只是OR小号更换所有AND秒。

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) 

假设我修改语法正确的SQL ofcourse:

因此,如果查询看起来是这样的我会爱。

如何使用where条款做到这一点?那可能吗?

+0

点击这里:http://stackoverflow.com/questions/17192829/does-rails-4-have-support-for - 或 - 查询将有一个'或'范围在rails5中,直到那时,你可以使用'any_of'提取到一个gem。 – xlembouras

回答

2

我希望它可以帮助

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

机解决方案

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

好的这个作品....但我怎么干呢? – marcamillion

+0

@marcamillion退房 – Arsen

相关问题