以前我的工厂看起来像这样:
FactoryGirl.define do
factory :file do
ignore do
attachment_id 1
end
trait :file_with_autoplay do
type_key "file_with_autoplay"
attrs {{
"path" => attachment_id,
"volume" => 1
}}
end
end
end
当我使用
建造工厂时create(:file, :file_with_autoplay, { story: story, attachment_id: attachment.id } )
它工作正常。
现在我必须稍微重构一下模型。在Story
File
列type_key
和attrs
之前。现在File
具有一对一模型Config
,我在其中提取type_key
和attrs
所以,我的工厂看起来像这样:
FactoryGirl.define do
factory :file do
ignore do
attachment_id nil
end
trait :file_with_autoplay do
association :config,
configuration_type: "file",
type_key: "file_with_autoplay",
attrs: {
"path" => "#{attachment_id}",
"volume" => 1
}
end
end
end
所以,没有太大的改变,但我现在将attachment_id传递给协会。 当我运行测试时,我得到了
ArgumentError:
Trait not registered: attachment_id
为清楚起见,这是我的新config
工厂:
FactoryGirl.define do
factory :config do
ignore do
attachment_id nil
end
configuration_type "file"
type_key "file_with_autoplay"
attrs {{
"generic_attr" => "generic_value"
}}
end
end
我在这里做错了什么?我应该如何通过Factory Girl中的关联传递attachment_id瞬态?