Я сталкивался с этой проблемой несколько раз, и общепринятые ответы никогда не работали для меня.
Предложенное решение в принятом ответе показалось, что оно будет работать лучше всего:
first_name_relation.or(last_name_relation)
Но я никогда не мог заставить это работать и всегда получал ошибку «неопределенный метод» для «или».
Мое решение:
combined_relation = first_name_relation + (last_name_relation - first_name_relation)
По сути, это дает мне результаты UNION между исходными запросами и объектами отношений, которые все еще являются правильными объектами ActiveRecord.
Это похоже на ответ, предоставленный @thatmiddleway, хотя мне нужно было добавить вычитание, чтобы получить коллекцию объектов DISTINCT. Это действительно преобразует объединенную коллекцию в ARRAY, но я все еще могу вызывать методы модели для отдельных экземпляров в «каждом» итераторе, на мой взгляд, что решило мою проблему.
Это мой первый ответ на StackOverflow (задыхаясь!), Поэтому я приветствую ваши отзывы!