2012-01-04 11 views
10

मैं एक परीक्षण में एक Student रिकॉर्ड बनाने के लिए कोशिश कर रहा हूँ इस तरह:रेल 3.1, मुझे ActiveRecord क्यों मिलता है :: अज्ञात एट्रिब्यूट त्रुटि: spec test में अज्ञात विशेषता?

student= Student.create!(:work_phone => "1234567890") 

लेकिन मैं इस त्रुटि मिलती है:

ActiveRecord::UnknownAttributeError: unknown attribute: work_phone 

हालांकि, work_phoneStudent मॉडल में परिभाषित किया गया है, और चले गए।

class Student < ActiveRecord::Base 

    validates_length_of :work_phone, :is => 10, :message => 'must be 10 digits, excluding special characters such as spaces and dashes. No extension or country code allowed.', :if => Proc.new{|o| !o.work_phone.blank?} 

    attr_accessible:work_phone 

end 

किसी भी विचार:

यहाँ Student मॉडल है?

उत्तर

28

क्या आपको यह त्रुटि केवल आपके परीक्षण वातावरण में मिल रही है। अधिक विशेष रूप से, जब आप

rake spec 

का उपयोग कर परीक्षण चलाने यह becase आप अपने परीक्षण वातावरण पर अपना माइग्रेशन चलाने नहीं किया है हो रहा हो सकता। आप या तो कर सकते हैं,

rake db:migrate RAILS_ENV=test 

या के बाद हो रही है नीचे की तरह अपने विकास पर माइग्रेशन खत्म हो जाने पर।

rake db:migrate 
rake db:test:prepare 
+2

हां, यही कारण है कि, मुझे, attr_accessor जोड़ने की ज़रूरत है: मॉडल के लिए work_phone, धन्यवाद – simo

+0

'रेक डीबी: टेस्ट: तैयार' के साथ परीक्षण डेटाबेस तैयार करना धन्यवाद, धन्यवाद। –

1

केवल attr_accessor जोड़ना: मॉडल के लिए work_phone भी काम करता है।

+0

मुझे संदेह है कि यह काम करता है क्योंकि अब आपके पास मॉडल पर एक विशेषता है। लेकिन यह सिर्फ उस उदाहरण पर ही इसे बचा सकता है। मॉडल को पुनः लोड करने का प्रयास करें और देखें कि क्या आप अभी भी वहां मान पा सकते हैं। यदि आप यह सुनिश्चित करना चाहते हैं कि यह डेटाबेस में भी सहेजा जाता है, तो आपको यह सुनिश्चित करना होगा कि डेटाबेस स्कीमा जिसे आप रिकॉर्ड सहेज रहे हैं, उसके लिए भी एक कॉलम है। (जिसका अर्थ यह सुनिश्चित करना है कि आपने इस मामले में अपने परीक्षण डेटाबेस के खिलाफ माइग्रेशन चलाया है)। – jake

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