Dans le cas où quelqu'un est à la recherche d'une mise à jour de répondre à cette question, il semble qu'il y est une pull request à faire entrer ça dans les Rails: https://github.com/rails/rails/pull/9052.
Grâce à @j-mcnally du singe patch pour ActiveRecord (https://gist.github.com/j-mcnally/250eaaceef234dd8971b) vous pouvez effectuer les opérations suivantes:
Person.where(name: 'John').or.where(last_name: 'Smith').all
Encore plus précieux est la capacité de la chaîne d'étendues avec 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) }
Ensuite, vous pouvez rechercher toutes les Personnes avec le prénom ou le nom ou dont le parent avec un nom de famille
Person.first_or_last_name('John Smith').or.parent_last_name('Smith')
Pas le meilleur exemple pour l'utilisation de cela, mais juste essayer de l'adapter avec la question.