您好我正在寻找一种干净的方式(覆盖.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)
同时指向writer
和receiver
我是否需要使用自定义SQL行或存在一些花哨的rails方式来执行此操作。
答案 0 :(得分:1)
我认为你可以想到你在问什么:你能在Rails中编写OR查询吗?答案是肯定的,但使用SQL片段:
Journal.where(channel: common_channel).where('(writer = ? AND receiver = ?) OR (writer = ? AND receiver = ?)', userA, userB, userB, userA)