2013-08-27 6 views
5

रेल 3 में अगर मैं डीबी को मारना चाहता था तो मैं एक क्वेरी के अंत में ले जाऊंगा। यह तब उपयोगी होता है जब मैं लिखने पर रीफ्रेशिंग कैश जैसी चीजें कर रहा हूं (इसलिए हमेशा कैश हिट करता है)।रेल 4 के बराबर रेल 3 'मॉडल.ल'

अब रेल 4 में, Model.all ActiveRecord::Relation ऑब्जेक्ट देता है (यानी डीबी नहीं मारा जाता है)। वास्तव में डीबी पर जाने और निर्दिष्ट रिकॉर्ड वापस करने का सबसे अच्छा तरीका क्या है?

+0

मॉडल.all.load – Bigxiang

+0

@ बिग्सियांग का प्रयास करें: ["वापसी मूल्य खुद संबंध है, रिकॉर्ड नहीं।"] (Http://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method- मैं लोड)। –

+0

ओह, क्षमा करें, मेरी गलती। मुझे लगता है कि "to_a" काम करेगा। – Bigxiang

उत्तर

8

रेल 4 में Model.all.to_a रेल 3.

में Modal.all के रूप में ही परिणाम प्राप्त होगा संशोधन:

@Bigxiang, उसकी टिप्पणी में बताया Model.all.load, कुछ हिट के लिए इस विधि डेटाबेस लेकिन अभी भी प्रयास करने के लिए एक ActiveRecordRelation देता है। और मूल रूप से "रेल 3" से Model.all जैसी समान कार्यक्षमता प्राप्त करने के लिए, आप ActiveRecordRelation पर to_a पर कॉल कर सकते हैं।

+0

हां, मैंने लापरवाही से दस्तावेज़ पढ़ा है, "to_a" अच्छा है :) – Bigxiang

+0

मुझे इस समस्या से विस्फोट हुआ, –

+0

पोस्ट करने के लिए धन्यवाद, यह भी मूल्यवान है कि यदि आपके पास पहले से ActiveRecord :: संबंध है, तो आपको ' .all'। उदाहरण: यदि आपके पास 'मॉडल' है (नाम: "जॉन")। रेल '3.2 में सभी', आप इसे 'Model.where (name: "John") से बदल सकते हैं।' Model.where (name 'के बजाय to_a' : "जॉन")। All.to_a' रेल में 4 – Felix