Таким образом, внутри запроса Where Active Record (AR) вы можете выполнить:
game_stickers.where('stickers.name != ?', 'Ban')
Но как вы можете проверить совпадения с несколькими строками с помощью оператора OR без , выполнив что-то вроде:
game_stickers.where('stickers.name != ? OR stickers.name != ?', 'Ban', 'Closed')
или без возврата к чему-то вроде [см. Примечание ниже]:
game_stickers.where.not(stickers.name: ['Ban','Closed','Block'])
ПРИМЕЧАНИЕ:
Причина, по которой я не хочуперейти к последней альтернативе, потому что я использую некоторые joins
и references
в своих запросах, которые (насколько я вижу) не очень хорошо подходят для этой опции.Код контекста выглядит примерно так:
game_stickers_and_stickers = game_stickers.includes(:sticker)
game_stickers_and_stickers.where('stickers.name = ?', 'Ban').references(:stickers).where(placement_side: side)
Возможно, вы можете посоветовать оптимальный способ выполнения этого запроса.