2011-10-01 70 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。 希望这有助于。