2010-08-08 14 views
11

ActiveRecord :: त्रुटियों के लिए रेल 3 प्रतिस्थापन क्या है?ActiveRecord :: त्रुटियों के लिए रेल 3 प्रतिस्थापन क्या है?

रेल 2.3.8 में, यह एक वस्तु है:

>> ActiveRecord::Errors 
NameError: uninitialized constant ActiveRecord::Errors 
from (irb):2 

मैं wizardly जनरेटर काम करने के लिए कोशिश कर रहा हूँ:

>> ActiveRecord::Errors 
=> ActiveRecord::Errors 

रेल 3.0.0rc में, आप एक NameError मिल रेल के साथ 3.

$ rails g wizardly_scaffold home 

लेकिन यह विफल रहता है:

01,235,
/Library/Ruby/Gems/1.8/gems/wizardly_gt-0.1.8.9/lib/validation_group.rb:150: 
uninitialized constant ActiveRecord::Errors (NameError) 

लाइन यह यह है को संदर्भित करता है:

ActiveRecord::Errors.send :include, ValidationGroup::ActiveRecord::Errors 

फ़ाइल में इससे पहले, हम देखते हैं:

module ValidationGroup 
    module ActiveRecord 
... 
    module Errors # included in ActiveRecord::Errors 
     def add_with_validation_group(attribute, msg = I18n.translate('activerecord.errors.messages')[:invalid], *args, &block) 
     add_error = @base.respond_to?(:should_validate?) ? (@base.should_validate?(attribute.to_sym) || attribute == :base) : true 
     add_without_validation_group(attribute, msg, *args, &block) if add_error 
     end 
... 
end 
+1

रयान नीचे सही प्रतिस्थापन को इंगित करता है। हालांकि, यह जादूगर काम करने के लिए पर्याप्त नहीं है (या यहां तक ​​कि मचान काम कर रहे हैं)। इसके लिए महत्वपूर्ण काम की आवश्यकता होगी। –

+0

क्या आप अंततः रेल 3 के साथ जादूगर तरीके से काम कर रहे थे? – peku

+0

मैंने नहीं किया। मैंने validedgroup के बजाय grouped_validation (जो रेल 3 के साथ काम करता है) का उपयोग करने का प्रयास किया, लेकिन इसे कभी नहीं मिला और चल रहा था। मैंने प्रोजेक्ट के साथ आगे बढ़ने के लिए रेल 2.3.8 पर वापस स्विच किया। यदि आप चाहें, तो मैं काम करने के लिए आपके लिए जादूगर रूप से अपने हैक किए गए संस्करण को खोद सकता हूं। –

उत्तर

12

कि ActiveModel::Errors होगी। सत्यापन और त्रुटि प्रबंधन जैसी चीजें सक्रिय मॉडल में स्थानांतरित की गई हैं ताकि सभी ओआरएम रेलटाइयां जैसे कि सक्रिय रिकॉर्ड, डेटा मैपर, मोंगोइड इत्यादि के लिए रेल में हुक करने के लिए एक सामान्य एपीआई प्रदान किया जा सके।

यह सक्रिय रूप से ActiveModel की जांच करने के लिए जादूगर प्लगइन की ज़रूरतों को प्रकट करेगा और यदि यह मौजूद है, तो ActiveRecord::Errors के बजाय त्रुटि प्रबंधन को शामिल करें। एक मामूली परिवर्तन।

0

इस मणि का प्रयास करें

http://rubygems.org/gems/wizardly_gt

मैं केवल अभी wizardly के साथ खेल शुरू करते हैं, लेकिन ऊपर कम से कम रेल के साथ संगत प्रतीत हो रहा है 3.

+0

मैंने wizardly_gt का उपयोग किया है और गैविन ईमेल किया है। यह रेल 3 के साथ काम नहीं करता है। –

0

wizardly जाहिर करता है एक बहुत अधिक है, लेकिन आपको validation_scopes देखें, जिसे मैंने अभी Rails3 संगतता के लिए अपडेट किया है। विशेषताओं द्वारा चीजों को समूहीकृत करने के बजाय, यह आपको त्रुटियों के नामित संग्रह बनाकर सत्यापन के विभिन्न समूहों को स्पष्ट रूप से घोषित करने देता है। आंतरिक रूप से यह एक बहुत ही सरल कार्यान्वयन है (एक ही कोड रेल 2 और 3 संभालता है)। व्यक्तिगत रूप से मुझे यह विशेषता द्वारा समूहीकृत करने से अधिक लचीला लगता है (उदाहरण के लिए यदि किसी विशेषता के विज़ार्ड के विभिन्न चरणों में एक विशेषता को अलग-अलग बाधाएं होनी चाहिए?)।

संबंधित मुद्दे