2011-10-01 78 views
0

我正在使用Ruby on Rails 3.1.0,rspec-rails 2Factory寶石。當我爲Account類聲明Factory對象時,我遇到了與驗證過程相關的一些問題。初始化工廠對象時遇到問題

在模型文件我有:

class Account < ActiveRecord::Base 
    belongs_to :user 

    attr_accessible :name, ..., :password 

    validates :name, 
    :presence => true 

    ... 

    validates :password, 
    :presence => true 
end 

在工廠的文件我有:

FactoryGirl.define do 
    factory :account, do 
    sequence(:name) { |n| "Foo #{n}"} 
    ... 
    password 'psw_secret' 
    association :user 
    end 

    factory :user do 
    auth 'registered' 
    end 
end 

當在規範文件中我的狀態let!(:account) { Factory(:account) }它能正常工作,但是當我用下面的:

let!(:user) { Factory(:user, :account => Factory(:account)) } 

我得到這個錯誤:

Failure/Error: let!(:user) { Factory(:user, :account => Factory(:account)) } 
ActiveRecord::RecordInvalid: 
    Validation failed: Account password can not be blank, Account is invalid 

爲什麼我得到那個錯誤?我該如何解決這個問題?

+0

你可以請你的':用戶'工廠更新嗎? – nowk

+0

@kwon - 我更新了問題。 – user12882

回答

1

我認爲你應該做的周圍用另一種方式:

@user = Factory(:user) 
@account = Factory(:account, :user => @user) 

的關係被定義在account,而不是user。 希望這有助於。