क्या आप विस्तार से बता सकते हैं कि रेल कॉलबैक में रूबी :before_save
और :before_create
रूबी के सत्यापन के साथ क्या करना है? क्या सत्यापन के बाद :before_save
या होता है :before_create
?
क्या आप विस्तार से बता सकते हैं कि रेल कॉलबैक में रूबी :before_save
और :before_create
रूबी के सत्यापन के साथ क्या करना है? क्या सत्यापन के बाद :before_save
या होता है :before_create
?
जवाबों:
रेल के तहत एक निर्माण कार्य में, डेटाबेस ऑपरेशन से पहले छह कॉलबैक होते हैं, और दो के बाद। आदेश में, ये हैं:
before_validation
before_validation_on_create
after_validation
after_validation_on_create
before_save
before_create
after_create
after_save
अपडेट ऑपरेशंस बिल्कुल एक जैसे सेट होते हैं, हर जगह के update
बजाय create
(और INSERT के बजाय UPDATE ) को छोड़कर ।
इस से, आप देख सकते हैं कि मान्यता से पहले किया जाता है before_save
और before_create
कॉलबैक।
before_save
पहले थोड़ा होता है before_create
। मेरे ज्ञान का सबसे अच्छा करने के लिए, उनके बीच कुछ भी नहीं होता है; लेकिन before_save
अपडेट ऑपरेशंस पर भी फायर करेगा, जबकि before_create
केवल क्रिएट्स पर फायर करेगा।
after_save
या उसके बाद बनाया गया था after_create
?
after_save
या after_create
कॉलबैक में, self
वह रिकॉर्ड है जिसे अभी बचाया गया था, क्योंकि यह सेव के बाद मौजूद है। शामिल ऑटोजनरेटेड क्षेत्रों की तरह है कि id
, created_at
, updated_at
।
before_create
कि डेटाबेस में सहेजे जा रहे एक नए ऑब्जेक्ट को संदर्भित करता है, न कि वास्तविक create
विधि को बुलाया जा रहा है। इस प्रकार, before_create
अभी भी save
विधि से निकाल दिया जा सकता है ।
before_save
3rd, और before_create
5th को सूचीबद्ध करता है ।
before_save
कहा जाता है कि हर बार किसी वस्तु को बचाया जाता है। तो नई और मौजूदा वस्तुओं के लिए। (कार्रवाई बनाएं और अपडेट करें)
before_create
केवल निर्माण से पहले। तो केवल नई वस्तुओं के लिए (कार्रवाई बनाएँ)
before_create
बनाम before_save :on => :create
कभी-कभी आपको कॉलबैक के आदेश से सावधान रहना होगा
अधिक जानकारी के लिए यहां देखें:
http://pivotallabs.com/activerecord-callbacks-autosave-before-this-and-that-etc/
before_save :on => :create
काम नहीं करता (कम से कम रेल पर 3.2)
before_save :generate_api_key, :if => :new_record?
before_validation_on_create
औरafter_validation_on_create
रेल 3 के रूप में हटा दिया जाता है , बजाय विकल्प के साथ उपयोगbefore_validation
औरafter_validation
क्रमशः:on => :create
।