पर सेट करने के बाद कॉलबैक के बाद मैं अपडेट_बी कॉलम को current_user पर सेट करने के लिए बाद में सहेजने के लिए कॉलबैक का उपयोग करना चाहता हूं। लेकिन मौजूदा_यूसर मॉडल में उपलब्ध नहीं है। मुझे यह कैसे करना चाहिए?अपडेट_बी कॉलम को current_user
6
A
उत्तर
8
आपको इसे नियंत्रक में संभालने की आवश्यकता है। पहले मॉडल पर सहेजें निष्पादित करें, फिर यदि रिकॉर्ड फ़ील्ड को सफलतापूर्वक अद्यतन करें।
उदाहरण
class MyController < ActionController::Base
def index
if record.save
record.update_attribute :updated_by, current_user.id
end
end
end
एक अन्य विकल्प (मैं इस एक पसंद करते हैं) कि तर्क लपेटता अपने मॉडल में एक कस्टम विधि बनाने के लिए है। उदाहरण
class Record < ActiveRecord::Base
def save_by(user)
self.updated_by = user.id
self.save
end
end
class MyController < ActionController::Base
def index
...
record.save_by(current_user)
end
end
1
के लिए मैं इस monkeypatch सिमोन Carletti की सलाह के आधार पर लागू किया है, जहाँ तक मैं touch
केवल करता timestamps, नहीं उन आईडी बता सकते हैं। क्या इसमें कुछ गड़बड़ है? यह एक devise current_user
के साथ काम करने के लिए डिज़ाइन किया गया है।
class ActiveRecord::Base
def save_with_user(user)
self.updated_by_user = user unless user.blank?
save
end
def update_attributes_with_user(attributes, user)
self.updated_by_user = user unless user.blank?
update_attributes(attributes)
end
end
और फिर create
और update
तरीकों तो जैसे इन फोन: मॉडल में डालने के लिए स्पर्श विधि के लिए
@foo.save_with_user(current_user)
@foo.update_attributes_with_user(params[:foo], current_user)
संबंधित मुद्दे
- 1. आरएसपीईसी 'current_user'
- 2. अजाक्स लिंक हटाएं current_user
- 3. रेल नोटिफिकेशन से current_user तक कैसे पहुंचे?
- 4. अपरिभाषित स्थानीय चर या विधि 'current_user'
- 5. चिंतन करना: उदाहरण के current_user एकल तालिका भाग
- 6. आप `current_user` को अपडेट_ट्रिब्यूट्स के साथ गलत पर सेट कैसे करते हैं?
- 7. रेल_ में form_for करने के लिए user_id पर current_user को कैसे जोड़ें?
- 8. MySQL अंतर्निर्मित फ़ंक्शन 'current_user()' एक होस्टनाम को '%' प्रतीक क्यों देता है?
- 9. Nvarchar कॉलम को INT
- 10. कॉलम प्रकार को संख्यात्मक
- 11. ऑरैकल त्रुटि, कॉलम को
- 12. कॉलम बनाम बदलें कॉलम
- 13. रेलवे माइग्रेशन कॉलम के साथ एक कॉलम को हटा देगा
- 14. @Temporal @ कॉलम कॉलम परिभाषा को प्राथमिकता दी गई है?
- 15. एक कॉलम को एकाधिक कॉलम में विभाजित करना
- 16. कॉलम को शून्य करने योग्य
- 17. अद्यतन कॉलम को महत्व देता
- 18. एक गणना कॉलम को नल
- 19. पंक्ति वेक्टर को कॉलम वेक्टर
- 20. बाएं कॉलम को छुपाएं DataGridView
- 21. माइस्क्ल - एक कॉलम को AUTO_INCREMENT
- 22. jqGrid कॉलम कॉलम हेडर
- 23. कॉलम
- 24. कॉलम
- 25. कॉलम
- 26. कॉलम
- 27. कॉलम
- 28. कॉलम
- 29. कॉलम
- 30. कॉलम
+1 :) – lucapette
कारण यह है कि यह शुष्क है, को बचाने के बाद से (है) ऐप में कई स्थानों से बुलाया जा सकता है, केवल एक नियंत्रक नहीं। मैं बस इसे एक बार करना चाहता हूं, और खुद को दोहराना नहीं है, और हमेशा इसे स्थापित करने के बारे में चिंता करने की चिंता करें। – pixelearth
फिर मॉडल.save_from_user (उपयोगकर्ता) जैसी एक नई विधि बनाएं और रिकॉर्ड को सहेजने और स्पर्श करने के लिए तर्क रखें। फिर, अपने नियंत्रक में बस उस विधि को 'current_user' को तर्क के रूप में पास करने के लिए कॉल करें। –