2011-09-09 21 views
46

मुझे इस मूल प्रश्न के बारे में सभी प्रकार की विरोधाभासी जानकारी मिल रही है, और उत्तर मेरी वर्तमान समस्याओं के लिए बहुत महत्वपूर्ण है। तो, बहुत सरलता से, रेल 3 में, क्या यह एक rel_to रिश्ते के साथ accepts_nested_attributes_for का उपयोग करने की अनुमति है या अनुमति नहीं है?क्या accepts_nested_attributes_for works_to के साथ काम करता है?

class User < ActiveRecord::Base 
    belongs_to :organization 
    accepts_nested_attributes_for :organization 
end 

class Organization < ActiveRecord::Base 
    has_many :users 
end 

एक ध्यान में रखते हुए: "। नेस्ट गुण आप माता-पिता के माध्यम से जुड़े रिकॉर्ड पर विशेषताओं को बचाने के लिए अनुमति देते हैं"

= form_for @user do |f| 
    f.label :name, "Name" 
    f.input :name 

    = f.fields_for :organization do |o| 
    o.label :city, "City" 
    o.input :city 

    f.submit "Submit" 
+1

डॉक्स http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html 'उल्लेख नहीं belongs_to' तो मैं यह शक है। आप कोशिश क्यों नहीं करते और हमें वापस क्यों नहीं लेते? – epochwolf

उत्तर

21

डॉक epochwolf पहली पंक्ति में राज्यों का हवाला दिया (मेरा जोर)।

आपको this other SO question which is along the same lines as this one में रुचि हो सकती है। यह दो संभावित समाधानों का वर्णन करता है: 1) फ़ॉर्म को प्रस्तुत करने से पहले उपयोगकर्ता में संगठन बनाने के लिए संबंधों के दूसरे पक्ष (इस मामले में, संगठन), या 2) using the build method पर accepts_nested_attributes को स्थानांतरित करना।

मुझे एक गिस्ट भी मिला जो a potential solution for using accepts_nested_attributes with a belongs_to relationship का वर्णन करता है यदि आप थोड़ा अतिरिक्त कोड से निपटने के इच्छुक हैं। यह build विधि का भी उपयोग करता है।

+0

मैंने रेल 4 के लिए उस गिस्ट को अपडेट किया है: https://gist.github.com/dmzza/ce9b6e660c576039afca984cda0f0aed – dmzza

19

नेस्टेड गुण रेल के रूप में एक संबंधित_to एसोसिएशन के लिए ठीक काम करने लगते हैं। यह रेल के पहले संस्करण में बदल दिया गया है, लेकिन मैंने 4.0.4 में परीक्षण किया और यह निश्चित रूप से अपेक्षित रूप से काम करता है।

+10

अभी भी रेल 4.1.1 में, accepts_nested_attributes * polymorphic * belong_to के साथ काम नहीं करता है। मुझे इसे एसोसिएशन के दूसरे (हैसोन) पक्ष में ले जाना पड़ा। यह सिर्फ दूसरों के साथ जानकारी साझा करने के लिए है। –

+0

मैं kid_drew से सहमत हूं। मुझे बस रेल संस्करण 4.2.9 में काम करने के लिए मिला। – Tintin81

9

रेल 3.2 में belongs_to संघ के लिए, नेस्टेड मॉडल निम्नलिखित दो कदम की जरूरत है:

(1) अपने बच्चे मॉडल (उपयोगकर्ता मॉडल) में जोड़े नई attr_accessible

accepts_nested_attributes_for :organization 
attr_accessible :organization_attributes 

(2) अपने बच्चे-नियंत्रक (उपयोगकर्ता नियंत्रक) को @user.build_organization आदेश स्तंभ organization बनाने के लिए जोड़ें।

def new 
    @user = User.new 
    @user.build_organization 
end 
+0

मैं यह कर रहा हूं, लेकिन मैं इसे काम करने में कई समस्याएं चला रहा हूं। माता-पिता को अपने बच्चे के लिए नेस्टेड पैरामीटर स्वीकार करने के लिए उचित रूप से निर्माण करने के लिए पर्याप्त प्रतीत नहीं होता है, यह अपेक्षा करता है – Csteele5