2013-09-25 11 views
5

बहुत सरल प्रश्न के साथ अद्यतन क्वेरी - मैं केवल एक रिकॉर्ड अपडेट करना चाहता हूं जो 2 पैरामीटर से मेल खाता है।धारा

मैं इस तरह यह कर जाना चाहिए: update_all का उपयोग कर

Model.where(:email =>"[email protected]",:code => "chejd").update(:password => "password").first 

मैं पाया है उदाहरण है, लेकिन मैं केवल 1 रिकॉर्ड की एक अधिकतम अपडेट करना चाहते हैं। अगर यह आपके DBMS और डीबी एडाप्टर के साथ काम करता है

उत्तर

16

की जांच:

Model.where(conditions).limit(1).update_all(changes) # => 1 

अद्यतन:

limit() और update_all() कॉम्बो एक example in the docs है, इसलिए यह शायद सबसे डीबी एडेप्टर द्वारा समर्थित है।

+0

यदि आप अपनी विधियों में शुद्ध एसक्यूएल का उपयोग नहीं करते हैं, तो रेल डीबी एडाप्टर के आधार पर क्वेरी को उचित वाक्यविन्यास एसक्यूएल में अनुवादित करेगा। – MrYoshiji

+0

यही मुझे चाहिए - मैंने बहुत परीक्षण नहीं किया है लेकिन ठीक लगता है। धन्यवाद – tommyd456

+1

उदाहरण 'सीमा()' से पहले 'ऑर्डर()' विनिर्देशक का उपयोग करके सही रिकॉर्ड अनुक्रम स्थापित करता है। 'जहां()' विनिर्देश से मेल खाने वाले सेट के भीतर कुछ मनमाने ढंग से रिकॉर्ड अपडेट करना टालना महत्वपूर्ण है। –