Tôi hiện đang viết một phương pháp tìm kiếm cho các ứng dụng đường ray của tôi, và tại thời điểm nó hoạt động tốt. Tôi đã điều sau đây trong game.rb tôi:Tìm kiếm nhiều cột - Rails
def self.search(search)
if search
find(:all, :conditions => ['game_name LIKE ? OR genre LIKE ? OR console LIKE ?', "%#{search}%", "#{search}", "#{search}"])
else
find(:all)
end
end
Bây giờ để tìm kiếm tốt, nhưng vấn đề của tôi là nếu có một kỷ lục trong GAME_NAME có từ 'playstation' trong nó, nó sẽ kết thúc việc tìm kiếm có . Nó chỉ trả về bản ghi đó, thay vì tất cả các trò chơi có 'playstation' được lưu trữ trong bảng điều khiển. Bây giờ tôi hiểu điều này là bởi vì tôi có 'HOẶC' trong điều kiện của tôi, nhưng tôi không biết thay thế. 'AND' yêu cầu tất cả các điều kiện để khớp hoặc không trả lại gì cả. Tôi có thể sử dụng phương án thay thế nào cho AND và OR? Trợ giúp sẽ được nhiều đánh giá cao.
Nếu có giải pháp có các hộp và mục nhập tìm kiếm riêng biệt, thì điều đó sẽ ổn, tôi không nhất thiết yêu cầu tìm kiếm tất cả dựa trên một biểu mẫu tìm kiếm.
Có thể là một giải pháp cho bạn là sử dụng một viên ngọc cho những gì bạn muốn như https://github.com/ernie/meta_where – Awea