2011-02-09 19 views
20

मैं रेल और टीडीडी के लिए बिल्कुल नया हूं (जैसा कि मेरी पोस्ट से कोई संदेह नहीं होगा) और मुझे अपने दिमाग को रुपेक और फैक्ट्रीगर्ल के चारों ओर लपेटने में कठिनाई हो रही है।फैक्टरीगर्ल + आरएसपीसी + रेल 3 'अपरिभाषित विधि <attribute> ='

मैं रेल 3 उपयोग कर रहा हूँ, rspec और कारखाने महिला:

gem 'rails', '3.0.3' 
# ... 
gem 'rspec-rails', '~>2.4.0' 
gem 'factory_girl_rails' 

मैं एक उपयोगकर्ता मॉडल है कि मैं गया है सफलतापूर्वक विकास के दौरान पर परीक्षण चल रहा है, लेकिन फिर एक विशेषता जोड़ने के लिए आवश्यक करने के लिए कहा जाता है, "स्रोत"। यह निर्धारित करने के लिए है कि मूल रूप से उपयोगकर्ता रिकॉर्ड कहां से आया था (स्थानीय बनाम एलडीएपी)।

मेरी factories.rb फ़ाइल में, मैं कई कारखानों को परिभाषित किया है, ऐसा ही कुछ देखने के लिए निम्नलिखित:

# An alumnus account tied to LDAP 
Factory.define :alumnus, :class => User do |f| 
    f.first_name "Mickey" 
    f.last_name "Mouse" 
    f.username "mickeymouse" 
    f.password "strongpassword" 
    f.source  "directory" 
end 

मैं एक मैक्रो परिभाषित (कि अब तक काम कर रहा है) है कि इस तरह दिखता है:

def login(user) 
    before(:each) do 
    sign_out :user 
    sign_in Factory.create(user) 
    end 
end 

मैं इतना (users_controller_spec.rb से उदाहरण) जैसे कई चश्मा में यह फोन कर रहा हूँ:

describe "for non-admins or managers" do 
    login(:alumnus) 

    it "should deny access" do 
    get :index 
    response.should redirect_to(destroy_user_session_path) 
    end 

end 

मैं "स्रोत" विशेषता निर्दिष्ट नहीं है, तो सब कुछ ठीक काम करता है, लेकिन जैसे ही मैं कर के रूप में, मैं बहुत की तरह एक त्रुटि जब परीक्षण

12) UsersController for non-admins or managers should deny access 
Failure/Error: Unable to find matching line from backtrace 
NoMethodError: 
    undefined method `source=' for #<User:0x00000100e256c0> 

मैं से विशेषता कोई समस्या नहीं उपयोग कर सकते हैं चलाने के रेल कंसोल और ऐप स्वयं, और यह उपयोगकर्ता मॉडल में मेरे attr_accessible में सूचीबद्ध है। यह लगभग है जैसे कि रुपयेपीईसी मेरे मॉडल का पुराना संस्करण देख रहा है और यह स्वीकार नहीं कर रहा है कि मैंने इसमें एक विशेषता जोड़ा है। लेकिन अगर मैं मेरे उपयोगकर्ता मॉडल में निम्न पंक्ति डाल, त्रुटि गायब

attr_accessor :source 

... जो मेरे लिए इंगित करता है कि यह वास्तव में सही मॉडल में दिख रही है।

सहायता!

उत्तर

54

इसे चलाने के बारे में कैसे?

rake db:test:load 

अगर आप schema.rb का उपयोग नहीं करते (जैसे आप config.active_record.schema_format = :sql निर्धारित किया है) [आप एक नई विशेषता जोड़ा है तो आप इसे परीक्षण डेटाबेस पर जाने की आवश्यकता होगी।]

+2

धन्यवाद! हाँ - यह सब कुछ था ... परीक्षण डेटाबेस का उपयोग कर इसके बारे में भूल गया ... – dearlbry

+2

बड़ी बचत! धन्यवाद @ टीके -421। पूरी तरह से भूल गया कि मैं परीक्षण डीबी में था ... – MorningHacker

+0

भगवान आपको आशीर्वाद देते हैं सर – ant

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