您好,我正在寻找一种干净的方法(覆盖 .where 方法??(从数据库中检索具有同一列的多个 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方法来执行此操作。
我想你可以把你问的问题想象成:你能在 Rails 中编写 OR 查询吗?答案是肯定的,但是对于 SQL 片段:
Journal.where(channel: common_channel).where('(writer = ? AND receiver = ?) OR (writer = ? AND receiver = ?)', userA, userB, userB, userA)