Таким образом, ответ на первоначальный вопрос, можете ли вы присоединиться к областям действия с «или» вместо «и», кажется «нет, вы не можете». Но вы можете написать код совершенно другой области или запроса, который выполняет эту работу, или использовать другую среду из ActiveRecord, например, MetaWhere или Squeel. Не полезно в моем случае
Я 'или' область видимости, сгенерированная pg_search, которая делает немного больше, чем select, она включает в себя порядок 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. Это немного мусора, но это работает.
Нет, не говорите мне, что я могу использовать "против: [: name,: code]" в pg_search, я хотел бы сделать это так, но поле 'name' - это hstore, которое pg_search не может обработать все же. Таким образом, область действия по имени должна быть создана вручную, а затем объединена с областью действия pg_search.