То, что вы говорите, не соответствует действительности - запрос типа
SELECT * FROM foos WHERE content_id = 345 AND (confirm = 1 OR auto_confirm = 1)
выберет строки, в которых оба столбца «подтверждения» установлены в 1 (а ActiveRecord создает столбцы tinyint для логических значений и проверяет значения 1 и 0).
Если вы имеете в виду "найти все строки, совпадающие по content_id и имеющие подтверждение EITHER ИЛИ auto_confirmed true, но НЕ оба" , то вы переходите к запросу, подобному этому
SELECT * FROM foos WHERE content_id = 345 AND ((confirmed = 1 AND auto_confirm = 0) OR (confirmed = 0 AND auto_confirm = 1))
который вы перефразируете в терминах AR, подобных этому
Reservation.find(:all,
:conditions => [
'container_id = ? AND ((confirmed = 1 AND auto_confirm != 1) OR (confirmed = 0 AND auto_confirm != 1))',
self]
)
Однако, судя по названиям ваших полей, вы на самом деле внедряете конечный автомат с отдельными столбцами, которые причинят вам боль, поэтому я бы исследовал кое-что, что дало бы вам прогрессию состояний вместо того, чтобы проверять отдельные биты включения и выключения. .