我的模型Student
,has_one
:account
。
所有与输入相关的数据都存储在帐户内。学生模型只是扮演它在关系中扮演的角色(其他一些模特属于学生)。
问题:我无法与工厂女孩一起测试。
factory :student do
end
除了它之外我无法定义任何东西。
@student = FactoryGirl.create(:student)
的每次尝试都得到了什么:
undefined method `valid?' for nil:NilClass
任何修复?
附加代码
class Account < ActiveRecord::Base
belongs_to :account_holder, :polymorphic => true
...
end
factory :account do
sequence :name do |n|
"Name#{n}"
end
sequence :surname do |n|
"Surname#{n}"
end
sequence :phone do |n|
"8911222332#{n}"
end
sequence :email do |n|
"somemail#{n}@mail.ru"
end
student
end
问题来源
学生有:
validates_associated_extended :account
基本上是常见的validate
但是父模型的错误提取。
因此,当FactoryGirl尝试创建学生时,它会验证帐户,即nil
。
我试过了:
before(:create) {|student| build(:account, :account_holder =>student )}
student factory
中的,account factory
:
association :account_holder, :factory=>:student
但它仍然无效。
答案 0 :(得分:0)
factory :student do
after :build do |student|
student.account << create(:account, :account_holder => student) if student.account_holder.nil?
end
end
这允许你同时拥有一个有效的学生并指定一个帐户,如果你想强制一个。 我认为FactoryGirl的最新版本甚至允许将其写为延迟属性语法:
factory :student do
account { create(:account) }
end