has_one与validates_presence_of和最新的factory_girl的关系

时间:2012-05-27 17:12:35

标签: ruby-on-rails rspec factory-bot

我遇到的问题与问题here相同。这篇文章已经过时了。我想知道如何做同样的事情。我的工厂是:

FactoryGirl.define do
  factory :user do
    sequence(:email) {|n| "email#{n}@factory.com" }
    password "foobar"
    password_confirmation { |u| u.password }
    profile
  end
end

但是FactoryGirl.create(:user)失败是因为配置文件模型中的验证错误且用户为空。

1 个答案:

答案 0 :(得分:1)

我要做的是使用after_create。这可确保它仅在创建用户后创建配置文件。

factory :user do
    sequence(:email) {|n| "email#{n}@factory.com" }
    password "foobar"
    password_confirmation { |u| u.password }
    after_create do |user|
      FactoryGirl.create(:profile, :user => user)
    end
  end

之后您可以致电Factory(:user)