我有一个名为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
)?
答案 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。它是关于工厂的非常丰富的知识来源。