Вы можете сделать оператор OR
напрямую с Arel, но синтаксис не очень красив и может стать немного сложным для чтения.Вот как это выглядело бы в арле:
foo = Foo.arel_table
Foo.where(foo[:bar].not_eq(nil).and(foo[:bar].not_eq('')).or(foo[:baz].not_eq(nil).and(foo[:baz].not_eq(''))))
Я бы посоветовал взглянуть на жемчужину визжа.Это дает вам доступ к дополнительным функциям в активной записи.Ваш запрос должен выглядеть следующим образом:
Foo.where{(bar.not_eq nil) & (bar.not_eq '') | (baz.not_eq nil) & (baz.not_eq nil)}
Вот ссылка для получения дополнительной информации: http://erniemiller.org/projects/squeel/
Есть несколько различных способов написать, что в squeel он поддерживает несколькостили синтаксиса, так что, если вам не понравился вышеприведенный, есть альтернативы.