2016-09-06 2 views
6

मौजूद होना चाहिए मैं ट्यूटोरियल अनुसरण कर रहा हूं: http://www.amooma.de/screencasts/2015-01-22-nested_forms-rails-4.2/रेल नेस्ट प्रपत्र त्रुटि, बच्चे

मैं usign रेल 5.0.0.1

लेकिन जब मैं एक होटल रजिस्टर, ऐसा लगता है कि होटल श्रेणी मौजूद होना चाहिए हूँ ।

1 त्रुटि को सहेजे जाने से इस होटल निषिद्ध: श्रेणियाँ होटल मौजूद होना चाहिए

मेरे होटल मॉडल:

class Hotel < ApplicationRecord 
    has_many :categories, dependent: :destroy 
    validates :name, presence: true 
    accepts_nested_attributes_for :categories, reject_if: proc { |attributes| attributes['name'].blank? }, allow_destroy: true 
end 

मेरे श्रेणी मॉडल:

class Category < ApplicationRecord 
    belongs_to :hotel 
    validates :name, presence: true 
end 

मेरे होटल नियंत्रक:

def new 
    @hotel = Hotel.new 
    @hotel.categories.build 
end 

def hotel_params 
    params.require(:hotel).permit(:name, categories_attributes: [ :id,:name]) 
end 

समाप्ति मेरी _form.html.erb

उत्तर

17

belongs_to व्यवहार rails >= 5.x में बदल गया है। अनिवार्य रूप से अब यह उम्मीद की जाती है कि belongs_to रिकॉर्ड एसोसिएशन के दूसरी तरफ इसे सौंपने से पहले मौजूद है। आप जबकि अपनी Category मॉडल में belongs_to की घोषणा के रूप में निम्नानुसार required :false पारित करने के लिए की जरूरत है:

class Category < ApplicationRecord 
    belongs_to :hotel, required: false 
    validates :name, presence: true 
end 
+1

मदद के लिए धन्यवाद, मैंने देखा कि 'inverse_of :: categories' भी काम करता है। –

+2

धन्यवाद धर्म, इससे मदद मिली है। साथ ही, ध्यान दें कि 'आवश्यक: झूठा' बहिष्कृत है (स्रोत: https://github.com/rails/rails/pull/18937)। बेहतर उपयोग 'belong_to: होटल, वैकल्पिक: सत्य' – htaidirt

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