Rails其中/ find_all具有多个id相同的列

时间:2017-04-10 15:55:42

标签: ruby-on-rails database model

您好我正在寻找一种干净的方式(覆盖.where方法??)从DB中检索多个具有相同列的多个ID的行,

示例:

# Actual ugly mode
args = {}
args[:channel] = common_channel

args[:writer] = userA
args[:receiver] = userB
journalsA = Journal.where args

args[:writer] = userB
args[:receiver] = userA
journalsB = Journal.where args
# @journals = journalsA + journalsB

我该如何制作这样的内容:Journals.where userA: userA, userB: userB, channel:x其中user(A|B)同时指向writerreceiver

我是否需要使用自定义SQL行或存在一些花哨的rails方式来执行此操作。

1 个答案:

答案 0 :(得分:1)

我认为你可以想到你在问什么:你能在Rails中编写OR查询吗?答案是肯定的,但使用SQL片段:

Journal.where(channel: common_channel).where('(writer = ? AND receiver = ?) OR (writer = ? AND receiver = ?)', userA, userB, userB, userA)