2013-10-25 22 views
5

Cách dễ nhất để thực hiện tìm kiếm ký tự đại diện nhanh trên một trường từ bảng điều khiển là gì? Tôi không quan tâm đến việc bảo vệ chống lại SQL injection.Rails 4: tìm kiếm ký tự đại diện đơn giản từ bảng điều khiển

Tôi đang sử dụng PostgreSQL.

Tìm kiếm title với chuỗi có chứa "mới nổi

này hoạt động nhưng có phần rườm rà. Tò mò nếu có một cách viết tắt?

Product.where("title @@ :q", q: "emerging") 

không kém rườm rà nhưng không còn xuất hiện để làm việc cho tôi trong Rails 4:

Product.where("title ILIKE ?", "emerging") 
Product.where("title ilike :q", q: "emerging") 

tôi đoán tôi đang tìm kiếm một cái gì đó giống như Product.where(title: "*emerging*")

Trả lời

11

này nên làm điều đó:

word = 'emerging' 
Product.where('title ILIKE ?', "%#{word}%") 
  • Các iLike làm cho việc tìm kiếm không nhạy cảm với các trường hợp
  • các "%" ký tự đại diện làm cho trận đấu tìm kiếm tất cả các sản phẩm có tiêu đề có chứa có "từ" bên trong với (hoặc không) công cụ trước và/hoặc sau.
+0

Tôi đã tìm kiếm một giải pháp cho điều này và tất cả nó đã được bổ sung thêm một "i" trên "like". Thậm chí không phải tài liệu hồ sơ tích cực cũng có .... sheesh. – nerdgasms

+0

@nerdgasms các hàm 'like' hoặc' ilike' không liên quan đến 'ActiveRecord' nhưng với hệ thống DB bạn đang sử dụng. – MrYoshiji

3

Sử dụng LIKE, như thế này:

Product.where('title LIKE ?', '%emerging%') 
Các vấn đề liên quan