5

मैं अभी अपने वर्तमान रेल 3 परियोजना के भीतर एक निर्यातक लिख रहा हूं। इस निर्यातक को प्रत्येक निर्यातित रिकॉर्ड को "निर्यात" (बूल) के रूप में चिह्नित करना होगा। मुझे पता है कि इसे आसानी से लूप में कैसे करना है, लेकिन ईमानदारी से, रेलवे को 300 रिकॉर्ड पर एक फ़ील्ड सेट करने के लिए, पंक्ति में 300 बार कहने के लिए डेटाबेस को क्वेरी करने देना बहुत अच्छा नहीं लगता है।एकाधिक रिकॉर्ड पर एकल विशेषता को अपडेट करने के लिए सर्वोत्तम अभ्यास

क्या किसी को पता है कि इसे अनुकूलित करने का कोई अच्छा तरीका है या नहीं? क्या मुझे तैयार कथन के साथ मैन्युअल रूप से खेलना चाहिए, या क्या Rails3 स्वचालित रूप से इसका ख्याल रखता है? क्या यह एक और एसक्यूएल कमांड है जो इसे एक कदम या कुछ में करने के लिए करता है?

आपकी मदद

  • आर्नी

उत्तर

15

क्लास पर उपयोग update_all विधि के लिए धन्यवाद। Rails API से:

# Update all books with 'Rails' in their title 
Book.update_all "author = 'David'", "title LIKE '%Rails%'" 
+0

अरे, धन्यवाद। मुझे इसे एपीआई दस्तावेज़ों में देखना चाहिए था। ऐसा लगता है कि मैं क्या देख रहा था! – arnekolja

+0

इसके साथ सावधान रहें क्योंकि यह सीधे डेटाबेस को अद्यतन करता है और 'update_column' के समान सत्यापन या कॉलबैक नहीं करता है। –

5

ActiveRecord 4.0 कि जिस तरह से हटा दिया गया है (Rails API), एक ही कर की वर्तमान रास्ता के बाद से है: इस पर मुझे इशारा कर के लिए

# Update all books with 'Rails' in their title 
Book.where('title LIKE ?', '%Rails%').update_all(author: 'David') 
संबंधित मुद्दे