В случае, если кто-то ищет обновленный ответ на этот вопрос, похоже, что существует существующий пул-запрос для передачи его в Rails: https://github.com/rails/rails/pull/9052.
Благодаря патчу @ j-mcnally для ActiveKecord(https://gist.github.com/j-mcnally/250eaaceef234dd8971b) вы можете сделать следующее:
Person.where(name: 'John').or.where(last_name: 'Smith').all
Еще более ценной является способность связывать области действия с помощью OR
:
scope :first_or_last_name, ->(name) { where(name: name.split(' ').first).or.where(last_name: name.split(' ').last) }
scope :parent_last_name, ->(name) { includes(:parents).where(last_name: name) }
Тогда вы можете найти всеЛица с именем или фамилией или чей родитель с фамилией
Person.first_or_last_name('John Smith').or.parent_last_name('Smith')
Не лучший пример для использования этого, но просто пытаюсь соответствовать этому вопросу.