在另一个模型的工厂 - Rails中使用模型属性

时间:2015-05-10 16:43:42

标签: ruby-on-rails tdd factory-bot faker

我有一个名为var puz1_arr:Array = new Array (puz1.wMc, puz1.aMc); trace(puz1_arr); 的工厂,HABTM Message。我想在Users工厂内模仿sender_id。 如果我这样做:

Message

我明白了:

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

如何引用其他工厂的数据属性(在我的情况下为FactoryGirl:DuplicateDefinitionError )?

1 个答案:

答案 0 :(得分:1)

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

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

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

FactoryGirl有很多关联选项。这种方式允许您创建belongs_to关联,但也可以使用回调has_many创建after_create

请查看associations part in Getting Started。它是关于工厂的非常丰富的知识来源。