2012-03-25 12 views
7

के साथ गैर केस संवेदी खोज मैं अपने नियंत्रक में इस है:रेल PostgreSQL तरह

Konkurrencer.where("title LIKE ?", "%#{params[:q]}%").limit(4) 

मुझे लगता है कि इस प्रश्न के केस संवेदी है। यह मामला संवेदनशील नहीं होना चाहिए।

उत्तर

25

आप के बजाय जहां में ILIKE उपयोग कर सकते हैं:

Konkurrencer.where("title ILIKE ?", "%#{params[:q]}%").limit(4) 

डॉक से:

कुंजी शब्द iLike मैच केस-संवेदी के अनुसार बनाने के लिए की तरह के बजाय इस्तेमाल किया जा सकता सक्रिय लोकेल यह SQL मानक में नहीं है लेकिन एक PostgreSQL एक्सटेंशन है।

+0

बस यह पाया http://www.postgresql.org/docs/8.0/static/ functions-matching.html –

+4

कृपया पुराने संस्करणों से मैन्युअल का उपयोग न करें। अपने अनुमोदन संस्करण संख्या के साथ अपने लिंक में "8.0" को बदलें (या इसके बजाय "वर्तमान" का उपयोग करें) –

+0

@a_horse_with_no_name यह इंगित करने के लिए धन्यवाद ... उत्तर – ScottJShea

2

मामले PostgreSQL के साथ खोज में असंवेदनशील का उपयोग कर कम का उपयोग कर के लिए ...

उदाहरण:

def self.search(client, date_start, date_end) 
     joins(:customer).where("LOWER(customers.name) LIKE ? AND date >= ? AND date <= ?", "%#{client}%", date_start, date_end) 
end 
+0

अच्छा समाधान, क्योंकि PostgreSQL और स्क्लाइट के साथ काम करता है। मैंने MySQL के साथ परीक्षण नहीं किया। मेरे मामले में मुझे इंस्टॉलेशन के लिए खोज शब्द को कम करना पड़ा। "% # {Client.downcase}% –