बचाने मैं बिल्कुल यकीन है कि क्या मेरी समस्या है नहीं कर रहा हूँ, तो यह सवाल कुछ और स्पष्टीकरण की आवश्यकता हो सकती है, लेकिन यहां जो सबसे अधिक प्रासंगिक नहीं दिखता है: मैं एक has_many :through
औररेल 3 has_many: के माध्यम से रिकॉर्ड भूलवश
मॉडल में शामिल होने के कुछ फ़ील्ड हैं जो विदेशी कुंजी नहीं हैं। जब मैं मॉडल तैयार करता हूं और सहेजने का प्रयास करता हूं तो मुझे शामिल मॉडल से गैर-विदेशी कुंजी फ़ील्ड पर सत्यापन त्रुटि मिलती है।
मेरे फ़ाइलें देखने के लिए की तरह:
{"first_name"=>"", "last_name"=>"", "weddings_attributes"=>{"0"=>{"wedding_assignments_attributes"=>{"0"=>{"role"=>"Bride's Maid", "budget"=>""}}, "date"=>"", "ceremony_notes"=>""}}}
और सटीक त्रुटि है:
Person.rb
has_many :wedding_assignments, :dependent => :destroy
has_many :weddings, :through=>:wedding_assignments
accepts_nested_attributes_for :weddings
accepts_nested_attributes_for :wedding_assignments
Wedding.rb
has_many :wedding_assignments, :dependent => :destroy
has_many :people, :through=>:wedding_assignments
accepts_nested_attributes_for :people
accepts_nested_attributes_for :wedding_assignments
WeddingAssignment.rb
belongs_to :person
belongs_to :wedding
validates_presence_of :role, :person, :wedding
people_controller.rb
def new
@person = Person.new
1.times do
wedding = @person.weddings.build
1.times do
assignment = wedding.wedding_assignments.build
assignment.person = @person
assignment.wedding = wedding
end
end
end
def create
@person = Person.new(params[:person])
@person.weddings.each do |wedding|
wedding.wedding_assignments.each do |assignment|
assignment.person = @person #i don't think I should need to set person and wedding manually, but I get a validation error if I don't
assignment.wedding = wedding
end
end
end
पैरामीटर है कि वापस आने के लिए की तरह लग रहे (भूमिका एक स्ट्रिंग है):
ActiveRecord::RecordInvalid in PeopleController#create
Validation failed: Role can't be blank
स्पष्ट रूप से सही नहीं है कौन सा है, क्योंकि आप यह params[]
में देख सकते हैं क्या मैं गलत कर रहा हूँ?
यह वह जगह है रेल 3.0.0
मुझे उत्सुकता है कि उन '1. टाइम्स' का उपयोग क्या है? – PeterWong
मैं इसे आसान बनाने के लिए करता हूं अगर मैं इसे 2. बार या बाद में बदलना चाहता हूं। – SooDesuNe
आप सही हैं, ऐसा करने से उपयोगकर्ता को एक बार में 10 विवाह जोड़ने का विकल्प भी मिल सकता है। : डी – PeterWong