【发布时间】:2011-10-01 16:40:14
【问题描述】:
我正在使用 Ruby on Rails 3.1.0、rspec-rails 2 和 Factory gems。当我为 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
为什么我收到这个错误?我该如何解决这个问题?
【问题讨论】:
-
您能更新一下您的
:user工厂吗? -
@kwon - 我更新了问题。
标签: ruby-on-rails ruby ruby-on-rails-3 rspec rspec2