2010-10-26 14 views

उत्तर

48

आप अपने मॉडल का एक उदाहरण है तो user.attributes तो मॉडल की विशेषताएं और उनके मान का एक हैश है, उदाहरण के लिए, आप की तरह कुछ कर सकते हैं: आप एक विशिष्ट नहीं है, तो

user.attributes.each_pair do |name, value| 
    puts "#{name} = #{value}" 
end 

उदाहरण के बाद कक्षा में ऐसे विधियां हैं जो डेटाबेस में फ़ील्ड के बारे में जानकारी लौटाती हैं User.columns और User.content_columns। जैसे

User.columns.each do |column| 
    puts column.name 
end 
+2

यह रेल 4 के रूप में बहिष्कृत है, अब सही समाधान क्या है? –

+1

किस विधि का उल्लेख बहिष्कृत किया गया है? वे अभी भी एपीआई दस्तावेज़ों में प्रतीत होते हैं। – mikej

+2

रेलवे 4.2.2 पर मेरे लिए यह बहुत अच्छा काम करता है। धन्यवाद माइकज। –

1
Article.columns.each do |column| 
    puts column.name 
end 

अनुच्छेद मॉडल के लिए सभी स्तंभ वस्तुओं से अधिक यह दोहराता।

1

@ model.methods ऑब्जेक्ट के सभी विधियों के नाम लौटाते हैं।

@ model.methods.grep (/ = $ /) आपको सभी लेखन विधियों के नाम वापस कर देगा, तो आप अनुमान लगा सकते हैं कि यदि आपके पास एक सेटटर है, तो आपके पास एक पाठक भी है, इसलिए यह एक " संपत्ति"।

आप विशेषता हैश (@ model.attributes) का भी निरीक्षण कर सकते हैं जो डेटाबेस में परिभाषित सभी कॉलम के साथ हैश है, और यह सबसे विश्वसनीय तरीका हो सकता है, क्योंकि "विधियों" विधि में विशेषता शामिल नहीं हो सकती है पाठकों (और लेखकों) गतिशील रूप से उत्पन्न किया। (यह आपके द्वारा उपयोग किए जा रहे RubyOnRails के संस्करण पर निर्भर हो सकता है)।

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