2016-07-22 10 views
7

एक belongs_to अक्षम mongoid एक सरल has_many के साथ दो mongoid मॉडल/उन दोनों के बीच संबंध belongs_to:संघ सत्यापन

class Lot 
    include Mongoid::Document 
    has_many :journal_items 
end 

class JournalItem 
    include Mongoid::Document 
    belongs_to :lot 
end 

मुद्दा है कि मैं एक JournalItem एक Lot बिना निर्माण नहीं कर सकता ऐसा लगता है कि mongoid कहते हैं डिफ़ॉल्ट रूप से JournalItem.lot_id पर एक गैर-शून्य सत्यापन।

JournalItem.create! 
# raises validation error "Lot can't be blank" 

मैं इसे कैसे अक्षम कर सकता हूं?

मैं रेल के साथ mongoid गुरु का उपयोग 5.

उत्तर

21

ठीक है, मैं यह समझ गए होंगे - mongoid संघों optional विकल्प है, जो बहुत अच्छी तरह से प्रलेखित किया जाना प्रतीत नहीं होता है।

तो यह होना चाहिए:

class JournalItem 
    include Mongoid::Document 
    belongs_to :lot, optional: true 
end 
5

रेल में 5 belongs_to करने के लिए आवश्यक लागू हो जाएगी: सच (rails/rails/pull/18937 देखें)

तो अब आवश्यक: सच अब मान्य नहीं है:

belongs_to :company, required: true # deprecated => `required: true` 

ActiveRecord आधारित ऐप्स पर इस विकल्प को अक्षम करने के लिए आपको नए व्यवहार को स्पष्ट रूप से कॉन्फ़िगर करने के लिए प्रारंभकर्ता बनाना चाहिए आर ऐप:

# config/initializers/active_record_belongs_to_required_by_default.rb 

Rails.application.config.active_record.belongs_to_required_by_default = true 

और प्रत्येक संबंधित_तो संबंध के लिए जो आवश्यक नहीं है, बस वैकल्पिक जोड़ें: सत्य।

belongs_to :company, optional: true 

और Mongoid के लिए 6.0 आप अपने Mongoid प्रारंभकर्ता में इस विकल्प को जोड़ने की आवश्यकता होगी:

# config/initializers/mongoid.rb 
Mongoid::Config.belongs_to_required_by_default = false