Foo.where(:some_id => 1).update_all(:some_columnn => "1")
में ऑब्जेक्ट लोड किए बिना कॉलम को अपडेट करने के लिए कैसे यह Foo को अपडेट करने का सही तरीका है? मैं वस्तु को खोजने और अद्यतन नहीं करना चाहता हूं।ActiveRecord
Foo.where(:some_id => 1).update_all(:some_columnn => "1")
में ऑब्जेक्ट लोड किए बिना कॉलम को अपडेट करने के लिए कैसे यह Foo को अपडेट करने का सही तरीका है? मैं वस्तु को खोजने और अद्यतन नहीं करना चाहता हूं।ActiveRecord
हाँ यह सही तरीका है, लेकिन याद रखें, n ओ कॉलबैक या सत्यापन निष्पादित किया जाएगा।
बीटीडब्ल्यू, update_all शर्तों को भी स्वीकार करता है। इस
Foo.update_all({:some_columnn => "1"}, {:some_id => 1})
यदि आप किसी ऑब्जेक्ट को तुरंत चालू नहीं करना चाहते हैं तो यह सही दृष्टिकोण है, लेकिन ध्यान रखें कि इसका अर्थ यह भी है कि यह आपके किसी भी मॉडल सत्यापन या कॉलबैक नहीं करेगा - यह सीधे SQL अपडेट कमांड पर जाता है।
आप, स्थिति उपयोग कर सकते हैं की update_all
update_all एपीआई के अनुसार (अपडेट, स्थिति = शून्य, विकल्प = {})
तो तुम कर सकते हैं:
Foo.update_all(:some_column => '1', :some_id => 1)
As of Rails 4 की तरह, की स्थिति नहीं रह गया है update_all
पद्धति पर आपूर्ति की जाती है, लेकिन इसके बजाय पूर्ववर्ती संग्रह में वर्णित होता है। उदाहरण के लिए,
# updates everything, as usual
Foo.update_all(some_column: '1')
# update only the specified rows
Foo.where(some_id: 1).update_all(some_column: '1')