2012-04-02 72 views
3

我试图改变其节能协会工厂女孩 - 通过关联数据

工厂时设置的属性:

Factory.define :course do |course| 
course.title "Course 1" 
end 

Factory.define :user do |user| 
user.name "Alex" 
end 

执行

Factory(:course, :user => Factory(:user, name: 'Tim')) 

保存的值将是“亚历克斯”不是'Tim'。有任何想法吗?

+0

我不能用类似的工厂重现它。你的工厂定义缺少'course.user'(可能是故意的),但在我的系统中并不重要。您可能想要提供更多数据(gem版本,模型,数据库迁移等)以重新创建您的问题。 – 2012-04-02 19:29:16

回答

8

首先,你需要的关联添加到您的工厂:

Factory.define :course do |course| 
    course.title "Course 1" 
    course.association :user 
end 

那么你应该做的2个步骤:

user = Factory.create :user, :name => "Tim" 
course = Factory.create :course, :user => user # or :user_id => user.id 

并假设模型协会,这样的设置起来很好,这将工作没有问题。