我有一家叫Message
HABTM的工厂Users
。我想sender_id
在Message
工厂里嘲讽。如果我做:
sender_id { FactoryGirl.build(:user}.id }
我得到:
FactoryGirl:DuplicateDefinitionError
如何引用另一个工厂的数据属性(id
在我的情况下)?
我有一家叫Message
HABTM的工厂Users
。我想sender_id
在Message
工厂里嘲讽。如果我做:
sender_id { FactoryGirl.build(:user}.id }
我得到:
FactoryGirl:DuplicateDefinitionError
如何引用另一个工厂的数据属性(id
在我的情况下)?
即使它有效,您所做的是build
用户(这意味着不保存到数据库)并尝试获取id
未保存的记录,这一定是错误的方式。
你可以做的,是从字面上创建对象并使用方法sender
将它与用户相关联。association
根据 FactoryGirl 的指南,您可以编写:
factory :message do
association :sender, factory: :user
end
FactoryGirl 有一组非常广泛的关联选项。这种方式允许您创建belongs_to
关联,但也可以has_many
使用回调创建after_create
。
请查看Getting Started 中的关联部分。它是关于工厂的非常丰富的知识来源。