2013-01-25 13 views
18

मैं एक मॉडल का वर्ग नाम कैसे प्राप्त कर सकता हूं जिसमें मुझे चिंता है?रेल: चिंता के अंदर बाहरी वर्ग का नाम प्राप्त करें

मैं यहां https://stackoverflow.com/a/14483808/1715035 में वर्णित एक दायरे के लिए चिंता पैदा कर रहा हूं लेकिन पॉलिमॉर्फिक खोज के लिए मॉडल नाम की आवश्यकता है।

self.table_name ठीक काम करता है और self.table_name.singularize.titleize.gsub(/\s+/, "") करता है लेकिन शायद कक्षा का नाम पाने का एक आसान तरीका है।

+2

'स्वयं' _IS_ कक्षा को याद रखें :) एंडी कहते हैं; बस 'स्वयं', 'self.name', या बस' name' का उपयोग करें। – Casper

उत्तर

29

आप name विधि का उपयोग कर सकते हैं जैसा कि आप कक्षा में ही करेंगे।

module M 
    extend ActiveSupport::Concern 

    included do 
    scope :my_fancy_scope, where(some_type: name) 
    end 
end 
+0

आह, किसी कारण से मैंने self.class.name की कोशिश की, लेकिन हाँ यह बहुत अच्छा काम करता है! – WhoDidThis

+4

'शामिल' ब्लॉक कक्षा के संदर्भ में निष्पादित किया गया है, जहां 'स्वयं' 'आपका मॉडल' होगा और इसलिए 'self.class'' कक्षा 'होगी - जो आप चाहते हैं! :) –

+0

वास्तव में 'self.class.name' का परिणाम आप जो भी चाहते हैं उसके परिणामस्वरूप होगा। हालांकि मुझे दस्तावेज में 'self = TheClass'' तथ्य नहीं मिला। – lllllll

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