Vì vậy, câu trả lời cho câu hỏi ban đầu, bạn có thể tham gia phạm vi với 'hoặc' thay vì 'và' dường như là "không bạn không thể". Nhưng bạn có thể mã hóa một phạm vi hoặc truy vấn hoàn toàn khác thực hiện công việc hoặc sử dụng một khung khác với ActiveRecord, ví dụ như MetaWhere hoặc Squeel. Không hữu ích trong trường hợp của tôi
Tôi đang hoặc là một phạm vi được tạo bởi pg_search, hoạt động nhiều hơn một chút so với lựa chọn, nó bao gồm thứ tự của ASC, điều này tạo ra sự lộn xộn của một liên minh sạch. Tôi muốn 'hoặc' nó với một phạm vi thủ công làm những thứ tôi không thể làm trong pg_search. Vì vậy, tôi đã phải làm điều đó như thế này.
Product.find_by_sql("(#{Product.code_starts_with('Tom').to_sql}) union (#{Product.name_starts_with('Tom').to_sql})")
Tức là biến phạm vi thành sql, đặt dấu ngoặc quanh mỗi cái, liên kết chúng lại với nhau và sau đó find_by_sql bằng cách sử dụng sql được tạo. Đó là một chút rác, nhưng nó hoạt động.
Không, đừng nói với tôi rằng tôi có thể sử dụng "chống lại: [: name ,: code]" trong pg_search, tôi muốn làm như vậy, nhưng trường 'name' là một cửa hàng, mà pg_search không thể xử lý chưa. Vì vậy, phạm vi theo tên phải được tạo thủ công và sau đó kết hợp với phạm vi pg_search.