2013-07-30 39 views
5

Im cố gắng kéo tất cả các bản ghi từ một mô hình dự án có trong project_name từ 'Fox'. Tôi có thể làm một tìm kiếm kỷ lục hoạt động và trở project_names cụ thể, như 'Brown Fox':Rails Active Record Search - Tên bao gồm một từ

@projects = Project.where("project_name like ?", "Brown Fox") 

Nhưng nếu tôi muốn trả lại tất cả những cái tên mà BAO GỒM 'Fox', điều này không làm việc trừ khi tên dự án hoàn thành là 'Fox':

@projects = Project.where("project_name like ?", "Fox") 

Làm cách nào để tìm kiếm trả về tất cả các đối tượng có từ 'Fox' trong tên?

Trả lời

8

Hãy thử sử dụng:

variable = "Fox" 
Project.where("project_name like ?", "%#{variable}%") 
+0

cảm ơn. điều này đã làm nó. – JakeTy

0

Bạn có thể sử dụng toán tử SQL %:

@projects = Project.where("project_name like ?", "%Fox%") 

Lưu ý rằng nếu bạn muốn truy vấn của bạn để trả về kết quả bỏ qua trường hợp văn bản, bạn có thể sử dụng PostgreSQL ilike thay vì like.

+0

Điều này cũng hiệu quả! – JakeTy

0

Bạn đã thử ransack?

Với ransack bạn có thể làm một cái gì đó giống như

@projects = Project.search(:project_name_cont => "Fox") 

Nếu bạn nghĩ rằng đó là quá nhiều cho những gì bạn cần. bạn có thể sử dụng toán tử % như MurifoX đã nói

+0

Cảm ơn. Im nhìn vào Ransack bây giờ. – JakeTy

Các vấn đề liên quan