在运行测试时,我收到此错误:Validation failed: User can't be blank (ActiveRecord::RecordInvalid)
。相关代码在这里。当我将user
添加到用户配置文件时,我想出了一个循环定义(测试突然完成)。我认为需要回调,但我最终想知道在哪里。我非常感谢你的帮助。 :)
模型/ user.rb
has_one :user_profile, dependent: :destroy, inverse_of: :user
delegate :first_name, :last_name, :sex, :birthday,
:location, :school, to: :user_profile
模型/ user_profile.rb
belongs_to :user, inverse_of: :user_profile
validates :user, presence: true
factories.rb
factory :user do
user_profile
end
factory :user_profile do
first_name Faker::Name.first_name # everything works, I put in the data already.
# ?????
end
答案 0 :(得分:2)
最后解决它。发生的事情是两个模型都需要彼此保存才能保存。所以我在user
工厂添加了一个after build钩子。我错过的是将引用传递给用户本身。
factory :user do |user|
after(:build) do |user|
create(:user_profile, user: user)
end
end
factory :user_profile do
association :user
first_name Faker::Name.first_name
end
答案 1 :(得分:1)
像这样创建工厂:
FactoryGirl.define do
factory :user do
first_name Faker::Name.first_name
end
end
和
FactoryGirl.define do
factory :user_profile do
association :user, strategy: :build
end
end
user_profile belongs_to user,因此我们在user_profile中创建关联。