दिलचस्प पोस्ट
फ़ायरबेज में पृष्ठभूमि में ऐप के बारे में नोटिफिकेशन कैसे प्रबंधित करें विंडोज सर्विस जीयूआई एप्लीकेशन को कैसे कार्यान्वित कर सकती है? Html पाठ बॉक्स में कीबोर्ड कैरेट स्थिति सेट करें ब्राउज़र तत्वों में तत्व तत्वों को क्यों जोड़ते हैं? लंबे समय तक चौड़े स्वरूप से काम नहीं करना पायथन सूची संरचना में NumPy सरणी परिवर्तित करना? स्ट्रिंग से सभी व्हाट्सपेस को निकालने का कुशल तरीका? मूल क्लास ऑब्जेक्ट की सूची को deserialize करने के लिए JSON.NET में कस्टम JsonConverter कैसे कार्यान्वित करें? दस्तावेज़ तैयार करने वाले कोण नियंत्रक में फ़ंक्शन कैसे चलाना है? फोन में फोनगैप खुला लिंक org.hibernate.LazyInitializationException – प्रॉक्सी प्रारंभ नहीं कर सका – कोई सत्र नहीं सी # में रिफ्लेक्शन का उपयोग करके स्ट्रेट से प्रॉपर्टी वैल्यू प्राप्त करें WPF में एमवीवीएम के साथ कैनवास में एन आयत जोड़ें php स्ट्रिंग समापन, प्रदर्शन ASP.NET WebForms में jQuery के साथ एक 'WebMethod' कॉल करना

Arel और Rails में एक तरह की क्वेरी कैसे करें?

मैं ऐसा कुछ करना चाहता हूं:

SELECT * FROM USER WHERE NAME LIKE '%Smith%'; 

Arel में मेरा प्रयास:

 # params[:query] = 'Smith' User.where("name like '%?%'", params[:query]).to_sql 

हालांकि, यह हो जाता है:

 SELECT * FROM USER WHERE NAME LIKE '%'Smith'%'; 

एरेएल क्वेरी स्ट्रिंग 'स्मिथ' को सही ढंग से लपेटता है, लेकिन क्योंकि यह एक ऐसा बयान है जो काम करता है।

एआरएल में एक तरह की क्वेरी कैसे करता है?

पीएस बोनस – मैं वास्तव में मेज पर दो फ़ील्ड को स्कैन करने का प्रयास कर रहा हूं, दोनों नाम और विवरण, यह देखने के लिए कि क्या क्वेरी से कोई मिलान है। यह कैसे काम करेगा?

वेब के समाधान से एकत्रित समाधान "Arel और Rails में एक तरह की क्वेरी कैसे करें?"

इस तरह आप arel में एक समान क्वेरी करते हैं:

 users = User.arel_table User.where(users[:name].matches("%#{user_name}%")) 

पुनश्च:

 users = User.arel_table query_string = "%#{params[query]}%" param_matches_string = ->(param){ users[param].matches(query_string) } User.where(param_matches_string.(:name)\ .or(param_matches_string.(:description))) 

प्रयत्न

 User.where("name like ?", "%#{params[:query]}%").to_sql 

पुनश्च।

 q = "%#{params[:query]}%" User.where("name like ? or description like ?", q, q).to_sql 

आआद यह एक लंबा समय रहा है लेकिन @ सीजीई 5207 ने एक संशोधन (ज्यादातर उपयोगी यदि आप लंबे समय से नामित या कई लंबे नामित पैरामीटर खोज रहे हैं या आप टाइप करने के लिए बहुत आलसी हैं)

 q = "%#{params[:query]}%" User.where("name like :q or description like :q", :q => q).to_sql 

या

 User.where("name like :q or description like :q", :q => "%#{params[:query]}%").to_sql 

रूबेन मल्लाबी का उत्तर पैरामीटर बाइंडिंग का उपयोग करने के लिए कम किया जा सकता है:

 User.where("name like :kw or description like :kw", :kw=>"%#{params[:query]}%").to_sql