2015-05-10 40 views
0

我有一个名为Message的工厂,其中HABTM Users。我想在Message工厂内模拟sender_id。 如果我做的:在另一个模型的工厂内使用模型属性 - 导轨

sender_id { FactoryGirl.build(:user}.id } 

我得到:

FactoryGirl:DuplicateDefinitionError 

我怎么可以参考另一家工厂的数据属性(id在我的情况)?

回答

1

即使它有效,你所做的是build一个用户(这意味着不保存到数据库),并尝试获取未保存记录的id,这肯定是一种错误的方式。

你可以做什么,是从字面上创建对象sender并使用association方法将其与用户相关联。根据FactoryGirl的指南,您可以编写:

factory :message do 
    association :sender, factory: :user 
end 

FactoryGirl有一组非常广泛的关联选项。通过这种方式,您可以创建belongs_to关联,但也可以使用回调after_create创建has_many。请参阅associations part in Getting Started。这是关于工厂的非常丰富的知识来源。

相关问题