2011-01-26 17 views
5

मैं किसी ऑब्जेक्ट के निर्माण के बाद सत्यापन को छोड़ना चाहता हूं। एक उदाहरण लेते चलोमोंगोइड रेल बनाने के बाद सत्यापन को छोड़ दें

व्यक्ति कई कंपनी है और कंपनी कई लोगों

व्यक्ति कई प्लेसमेंट और प्लेसमेंट व्यक्ति के अंतर्गत आता है व्यक्ति को केवल एक सक्रिय स्थापन कर सकते है है

प्लेसमेंट मॉडल एक मान्यता है कि अगर जाँच करता है सहेजे जाने पर एक व्यक्ति के पास पहले से ही सक्रिय प्लेसमेंट होता है।

@placement is active placement 
@employment.placement = @person 

if @placement.save 
    ################# 
    @person.placements << @placement 
    @company.placements << @placement 
end 

अब जब नियुक्ति पहली बार सहेजी जाती है, तो कोई समस्या सहेजी नहीं जाती है।

अब समस्या आता है जब

@person.placements << @placement 

के बाद से व्यक्ति पहले से ही @ placement.save के माध्यम से सक्रिय नियुक्ति है।

@ person.placements < < @placement फिर से @placement बचाता है और सत्यापन @placement ऑब्जेक्ट को सत्यापन त्रुटि को सक्रिय करता है।

वहाँ किसी भी तरह से इतना है कि मैं अपने कोड की ############ क्षेत्र में है कि विशिष्ट सत्यापन के माध्यम से कुछ कहाँ जाना है नहीं बता है।

या किसी वैकल्पिक समाधान का स्वागत है।

धन्यवाद

+0

आप जवाब को स्वीकार करना चाहिए कि वह आपके लिए काम किया। लड़के को अपना अंक दें। :) – sujal

उत्तर

11

आप का उपयोग कर सकते हैं: बचाने: मान्य => झूठी

+0

लेकिन आप कैसे ** सहेजते हैं: वैध = = झूठी ** << ऑपरेटर का उपयोग करते समय यह @company और @placements दोनों को एक बार में सहेजता है? कोई विचार – Gagan

+0

बस पहले प्लेसमेंट को सहेजें (झूठी मान्य के साथ), फिर इसे अपनी कंपनी में जोड़ें – MatthewFord

0

पहली बात यह है कि क्या आप सभी सत्यापन के बाद बचाने के लिए तो यह

if @placement.valid? 
    @person.placements << @placement 
    @company.placements << @placement 
end 

अगला बात की तरह कुछ करना चाहते उत्तीर्ण है तुम दोनों दस्तावेजों पर mongoid तो << ऑपरेटर कॉल .save उपयोग कर रहे हैं ।

समाधान या तो मोंगोइड के << को ओवरराइट कर सकता है, या कार्रवाई के दौरान सत्यापन को speacify करने की आवश्यकता है।

validates :placeholder, :on => :create और या

if @placement.valid? 
    @placement.person = @person 
    @company.placements << @placement 
end 
संबंधित मुद्दे