मेरे पास एक उपयोगकर्ता और प्रोफाइल मॉडल है। एक उपयोगकर्ता के पास कई प्रोफाइल हो सकते हैं। उपयोगकर्ता निर्माण प्रक्रिया के दौरान मुझे अपने उपयोगकर्ता मॉडल में प्रोफाइल अनुभाग (जैसे फोन नंबर) से केवल एक ही जानकारी तक पहुंचने की आवश्यकता है। इसलिए मैं attr_accessible
के माध्यम से इसे करने की कोशिश कर रहा हूं। मेरा user.rb इस तरह दिखता है।रेल में नेस्टेड फॉर्म - has_many संबंध में विशेषता का उपयोग
has_many :profiles
attr_accessible :handle, :email, :password, :profile_mobile_number
attr_accessor : :profile_mobile_number
समस्या यह है कि मैं का सामना करना पड़ रहा है कि जब मैं (विधि, निजी है, हालांकि मुझे लगता है कि यह कोई बात नहीं) user.rb में एक विधि में गेटर विधि profile_mobile_number कॉल करने के लिए प्रयास करते हैं, मैं है मैं एक शून्य मूल्य प्राप्त कर रहा हूँ। मैं अपने उपयोगकर्ताओं/new.html.erb फॉर्म में निम्नलिखित का उपयोग करता हूं
मेरा प्रश्न यह है कि ऐसा करने का सही तरीका क्या है? क्या मुझे <% f.fields_for :profile do |ff| -%>
या <% f.fields_for :profiles do |ff| -%>
का उपयोग करना चाहिए (ध्यान दें कि दूसरा एक बहुवचन है)। जब मैं बहुवचन का उपयोग करता हूं: प्रोफ़ाइल, मैं फॉर्म पर फ़ील्ड भी नहीं देखता हूं। मुझे यहां क्या समझ नहीं आ रहा है? और मॉडल उपयोगकर्ता.आरबी में किस तनाव का उपयोग करने की आवश्यकता है? : profile_phone_number या: profiles_phone_number? धन्यवाद।
जैसा कि मैंने कहा था कि मैं f.fields_for का उपयोग कर रहा था: प्रोफाइल और फॉर्म में फ़ील्ड दिखाई नहीं दे रहे थे। यह पता चला है कि मुझे नियंत्रक में @ user.profiles.build जोड़ना था। लेकिन अब मैं user.rb में attr_accessible और accepts_nested_attributes_for दोनों नहीं कर पा रहा हूं। पूर्व उत्तरार्द्ध ओवरराइड करता है। लेकिन मैं प्रोफ़ाइल मॉडल के गुणों तक पहुंच प्रतिबंधित नहीं करते हुए उपयोगकर्ता मॉडल के गुणों के लिए attr_accesible रखना चाहता हूं। कोई विचार? धन्यवाद। –