Отже, відповідь на початкове запитання, чи можете ви приєднати області до позначень "або" замість "і" здається, "ні, ви не можете". Але ви можете передавати код абсолютно іншого обсягу або запиту, який виконує цю роботу, або використовувати інший фреймворк від ActiveRecord, наприклад, MetaWhere або Squeel. Не корисно в моєму випадку
Я 'або' є область, згенерована pg_search, яка робить трохи більше, ніж вибирає, вона включає в себе замовлення ASC, що робить безлад чистим об'єднанням. Я хочу "чи" це з ручною сферою, яка робить речі, які я не можу зробити в pg_search. Тому я повинен був зробити це так.
Product.find_by_sql("(#{Product.code_starts_with('Tom').to_sql}) union (#{Product.name_starts_with('Tom').to_sql})")
Тобто перетворіть сфери на sql, поставте дужки навколо кожного, об'єднайте їх разом, а потім find_by_sql, використовуючи створений sql. Це трохи сміття, але це працює.
Ні, не кажіть мені, що я можу використовувати "проти: [: ім'я,: код]" у pg_search, я б хотів це зробити так, але поле "ім'я" - це сховище, з яким pg_search не може впоратися поки що. Отже, область назви повинна бути створена вручну, а потім об'єднана з областю pg_search.