在另一个模型的工厂中使用模型属性 - 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。这是一个非常丰富的工厂知识来源。