मेरे पास एक आइटम संसाधन और एक मालिक संसाधन है।मैं मौजूदा नेस्टेड विशेषता का संदर्भ देने वाला एक नया ऑब्जेक्ट कैसे बना सकता हूं?
rails g scaffold Item name:string
rails g scaffold Owner name:string
class Item < ActiveRecord::Base
has_one :owner
accepts_nested_attributes_for :owner
end
class Owner < ActiveRecord::Base
belongs_to :item
end
मेरी समस्या यह है कि मैं एक मौजूदा मालिक ऑब्जेक्ट का संदर्भ देने वाला एक नया आइटम ऑब्जेक्ट नहीं बना सकता।
In /db/migrate/create_owners.rb
def self.up
...
t.integer :item_id
end
rake db:migrate
rails c
ruby-1.9.2-p0 > o= Owner.create(:name => "Test")
=> #<Owner id: 1, name: "Test", created_at: "...", updated_at: "...">
ruby-1.9.2-p0 > i= Item.create(:owner_attributes => {"id" => Owner.last.id.to_s})
ActiveRecord::RecordNotFound: Couldn't find Owner with ID=1 for Item with ID=
मुझे पता है कि Item.create(:owner_id => "1")
इस मामले में काम करेगा हूँ, लेकिन दुर्भाग्य से मेरे एप्लिकेशन में यह नहीं एक व्यवहार्य समाधान। ऐसा इसलिए है क्योंकि मैं फ्लाई पर नेस्टेड विशेषताओं को जोड़ रहा हूं और हटा रहा हूं, उदाहरण के लिए, एक मौजूदा आइटम ऑब्जेक्ट और एक नई स्वामी ऑब्जेक्ट के साथ एक नया आइटम ऑब्जेक्ट बनाने की आवश्यकता है।
मैं इन कड़ियों पाया, लेकिन ऐसा नहीं हो सकता है अगर यह एक सुविधा या रेल में एक बग है:
https://rails.lighthouseapp.com/projects/8994/tickets/4254-assigning-nested-attributes-fails-for-new-object-when-id-is-specified
http://osdir.com/ml/RubyonRails:Core/2011-05/msg00001.html
किसी ने मुझसे कैसे मैं यह काम कर सकते हैं के रूप में एक विचार दे सकते हैं या क्या मैंने 'accepts_nested_attributes_for' का उपयोग करने के सही तरीके को गलत समझा है ??
मैं रेल 3.0.5 और रूबी 1.9.2p0 का उपयोग कर रहा हूं।
अग्रिम धन्यवाद।
धन्यवाद! मैंने इस परियोजना पर एक साल से अधिक समय तक काम नहीं किया है, लेकिन आपका जवाब समझ में आता है। जब मैं एक पल करता हूं तो मैं इसे (ब्याज से बाहर) कोशिश करूंगा। –