2013-01-22 302 views
0

我跟随micheal hartl rails教程。我在第10章。我在工厂女孩中定义有效部分的方式有什么问题吗? 当我打电话给rspec时,我从工厂女孩那里得到这个错误。有没有问题,我建立了工厂女孩的方式

Failure/Error: FactoryGirl.create(:micropost, user: @user, created_at: 1.day.ago) 
    NoMethodError: 
     undefined method `content=' for #<User:0x0000010343f018> 

factories.rb

FactoryGirl.define do 
    factory :user do 
    sequence(:name) { |n| "Person #{n}" } 
    sequence(:email) { |n| "person_#{n}@example.com" } 
    password "foobar" 
    password_confirmation "foobar" 

    factory :admin do 
     admin true 
    end 

    factory :micropost do 
     content "Lorem ipsum " 
     #association :user 
     user 
    end 
    end 
end 

这就是被称为

before { @user.save } 
    let!(:older_micropost) do 
     FactoryGirl.create(:micropost, user: @user, created_at: 1.day.ago) 
    end 
    let!(:newer_micropost) do 
     FactoryGirl.create(:micropost, user: @user, created_at: 1.hour.ago) 
    end 
    it " should have the right micropost in the right order" do 
     @user.microposts.should == [newer_micropost, older_micropost] 
    end 
+0

你能确认你已经运行'耙分贝:测试:prepare'?它可能需要运行以将“内容”列添加到microsposts表中。 –

+0

是的,我终于得到它的工作谢谢 – skip87

回答

1

获取factory :micropostfactory :user的部分,否则将考虑content作为用户属性。

这应该工作:

FactoryGirl.define do 
    factory :user do 
    sequence(:name) { |n| "Person #{n}" } 
    sequence(:email) { |n| "person_#{n}@example.com" } 
    password "foobar" 
    password_confirmation "foobar" 

    factory :admin do 
     admin true 
    end 
    end 

    factory :micropost do 
    content "Lorem ipsum " 
    association :user 
    end 

end