2016-07-02 11 views
5

मेरे ज्ञान के लिए, रेल 5 में नए डिफ़ॉल्ट को belongs_to एसोसिएशन मौजूद होने की आवश्यकता है। मैंने इस एसोसिएशन के साथ एक मॉडल बनाया है, लेकिन समस्या यह है कि संबंधित फ़ील्ड खाली होने पर मुझे उपस्थिति सत्यापन त्रुटि नहीं मिलती है। इसके बजाय मुझे डेटाबेस नल सत्यापन त्रुटि मिलती है क्योंकि मैंने _id कॉलम को शून्य नहीं किया है। (पीजी :: NotNullViolation क्योंकि मैं पोस्टग्रेज़ का उपयोग करता हूं)रेलों में मौजूदगी 5 में काम नहीं कर रहा है

क्या यह व्यवहार सामान्य है? मेरा मतलब है कि मुझे केवल रेल त्रुटि नहीं मिलनी चाहिए?

बीटीडब्ल्यू, जब मैं फ़ील्ड के लिए उपस्थिति सत्यापन जोड़ता हूं, तो यह मेरी अपेक्षा के अनुसार काम करता है।

उत्तर

5

इस मुद्दे के अनुसार weird behaviour of config belongs_to_required_by_default, ऐसा लगता है कि आपके अन्य रत्नों में से एक ActiveRecord::Base में हस्तक्षेप करता है और बग का कारण बनता है।

मुद्दे पर समाधान में से एक सीधे application.rb में लाइन

config.active_record.belongs_to_required_by_default = true 

initializers से स्थानांतरित करने के लिए है।

यह मेरे लिए आसानी से काम किया।

+0

यदि आपके पास रेल 5.1 है तो आपको कुछ भी करने की आवश्यकता नहीं है। बस सुनिश्चित करें कि 'config.load_defaults 5.1' आपके application.rb में है, जो नए जेनरेट किए गए ऐप्स ([संदर्भ] (https://github.com/rails/rails/issues/23589#issuecomment-305557647) के लिए डिफ़ॉल्ट है) –

3

नई रेल 5 अनुप्रयोगों

config/initializers/active_record_belongs_to_required_by_default.rb 

में एक नया प्रारंभकर्ता के साथ आते हैं तो आप एक रेल 4 आवेदन अपग्रेड किए गए या, तो उस फ़ाइल अनुपलब्ध हो सकता है रेल 5 का बीटा संस्करण के साथ अपने आवेदन बनाया है।

कि फाइल में विन्यास सवाल में सुविधा सक्षम:

# Be sure to restart your server when you modify this file. 

# Require `belongs_to` associations by default. This is a new Rails 5.0 
# default, so it is introduced as a configuration option to ensure that apps 
# made on earlier versions of Rails are not affected when upgrading. 
Rails.application.config.active_record.belongs_to_required_by_default = true 

कृपया जांच करें कि कैसे belongs_to_required_by_default अपने आवेदन में किया गया है।

+2

'Rails.application.config.active_record.belongs_to_required_by_default = true' अभी भी प्रोजेक्ट के 'new_framework_defaults.rb' में है। तो मुझे लगता है कि यह समस्या नहीं है। – Arvinje

0

मुझे एक ही समस्या का सामना करना पड़ा।

आप

config.active_record.belongs_to_required_by_default = false

config/environments/needed_environment.rb करने के लिए या config/application.rb

मेरे लिए मदद करने के लिए स्थानांतरित कर सकते हैं!

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