2013-01-08 11 views
16

मैं दो मॉडल इस तरह है: -ruby ​​एक मॉडल से दूसरे मॉडल में पेपरक्लिप अनुलग्नक की प्रतिलिपि बनाएँ?

मॉडल 1 - कार्ड - उपयोगकर्ता - - पहले पन्ने
लगाव नाम = cardimage
मॉडल 2 के लिए ब्याज की डेटा का प्रतिनिधित्व होता है उपयोगकर्ता
लगाव का नाम शामिल है = अवतार

जब मैं बनाउंगा! एक नया कार्ड, मैं चाहता हूं कि उपयोगकर्ता मॉडल से अवतार कार्ड कार्ड में नए कार्डिमेज के रूप में कॉपी किया जाए।

क्या इसके लिए कोई आसान लाइनर है?

रूबी/रेल/पेपरक्लिप

+0

संभावित डुप्लिकेट http://stackoverflow.com/questions/2739839/how-to-copy-a-file-using-paperclip – cih

+1

क्या आपको अनुलग्नक को दो बार स्टोर करने की आवश्यकता है? यदि आपका उपयोगकर्ता मॉडल कार्ड मॉडल से जुड़ा हुआ है तो आप डुप्लिकेशन से बच सकते हैं। – cih

+0

वह उदाहरण एक उपयोगकर्ता प्रोफ़ाइल से दूसरे में कॉपी कर रहा है। छवि को एक अलग मॉडल में कॉपी करने की आवश्यकता है। – Gary

उत्तर

31

इस चाल करना चाहिए, यदि आप एक after_create कॉलबैक इस्तेमाल कर सकते हैं नहीं तो मैं नियंत्रक कार्रवाई है कि कार्ड बनाता है में यह कर की सिफारिश करेंगे अगर मॉडल जुड़े हुए हैं।

instance_of_model_one.cardimage = instance_of_model_two.avatar 
instance_of_model_one.save 
+0

यह सही ढंग से काम करता है। मैंने शुरुआत में फ़ाइल नाम के साथ प्रयास किया, लेकिन बस विधि सही है, पेपरक्लिप सही आईडी के साथ बाकी को अच्छी तरह से संभालती है। धन्यवाद। – Gary

+0

कोई जांच नहीं, मदद करने में खुशी हुई। – cih

+0

मुझे लगता है कि आपको 'instance_of_model_two.avatar.dup' –

2
old_avatar = model1.avatar; 
model2.avatar.create(attachment: old_avatar.attachment); 
model2.save; 

यह मेरे लिए काम किया।

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