在另一个模型的工厂中使用模型属性 - Rails
Using Model Attributes inside another Model's Factory - Rails
我有一个名为 Message
的工厂,HABTM Users
。我想在 Message
工厂中模拟 sender_id
。
如果我这样做:
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
关联,但也可以使用回调 after_create
创建 has_many
。
请看associations part in Getting Started。这是一个非常丰富的工厂知识来源。
我有一个名为 Message
的工厂,HABTM Users
。我想在 Message
工厂中模拟 sender_id
。
如果我这样做:
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
关联,但也可以使用回调 after_create
创建 has_many
。
请看associations part in Getting Started。这是一个非常丰富的工厂知识来源。