नहीं रेल में डिफ़ॉल्ट रूप से
, के बाद से वहाँ, इतने सारे डीबी विकल्प (MySQL, PostgreSQL, MongoDB, CouchDB ...) कर रहे हैं आप, लेकिन MetaWhere, जहाँ आप की तरह कर सकते हैं की तरह जवाहरात की जाँच कर सकते हैं:
Article.where(:title.matches => 'Hello%', :created_at.gt => 3.days.ago)
=> SELECT "articles".* FROM "articles" WHERE ("articles"."title" LIKE 'Hello%')
AND ("articles"."created_at" > '2010-04-12 18:39:32.592087')
सामान्य में हालांकि आप शायद, कुछ डीबी विशिष्ट कोड होना चाहिए या अपने कोड refactor करेंगे (यानी फिर से परिभाषित रों पर .matches ऑपरेटर मेटावेयर में ymbols) एक अलग डेटाबेस के साथ काम करने के लिए। उम्मीद है कि आप अक्सर अपने डेटाबेस को नहीं बदलेंगे, लेकिन यदि आपके पास एक केंद्रीकृत स्थान होना चाहिए जहां आप इन ऑपरेटरों को फिर से उपयोग के लिए परिभाषित करते हैं। ध्यान रखें कि एक डेटाबेस में परिभाषित ऑपरेटर या फ़ंक्शन किसी अन्य में उपलब्ध नहीं हो सकता है, इस मामले में यह सामान्यीकृत ऑपरेशन चल रहा है क्योंकि आप वैसे भी खोज निष्पादित नहीं कर पाएंगे।
स्रोत
2011-03-16 18:51:14
बुरा नहीं है। मुझे लगता है कि SQLite, Postgres और MySQL के बीच प्रतिशत संकेत सामान्य हो सकता है। –
पढ़ने के लिए कोड स्निपेट को संशोधित करने का सुझाव दें: 'अध्यक्ष। कहीं (अध्यक्ष .arel_table [: name] .matches ('% yson% ')) ' –