我有Board
属于Artist
。到目前为止,我能够在我的电路板工厂中设置这个多态关联:
FactoryGirl.define do
factory :board do
association :boardable, factory: :artist
boardable_type "Artist"
end
end
我在实际应用中设置的模式要求我的主板name
为其所属艺术家的名称。我尝试过这样的事情:
name boardable.name
但最终得到了这个错误:
ArgumentError: Trait not registered: boardable
在belongs_to/polymorphic
关联中检索属性的最佳方法是什么?
答案 0 :(得分:0)
多态关联不需要在FactoryGirl中声明显式association
。以下内容已经过验证,可以使用:
FactoryGirl.define do
factory :board do
boardable factory: :artist
name { boardable.name }
end
end
就Board
的名称而言,请确保将属性值包装在括号中,或者FactoryGirl可能将其视为特征:) {{1} boardable_type
属性将自动设置为Board
的类,因此它甚至不需要声明。
答案 1 :(得分:0)
您可以使用之前:创建。像这样的东西
FactoryGirl.define do
factory :board do
...
before(:create) do |board, evaluator|
# create artist factory here to associate board to
# example below that isn't polymorphic but you get the idea
FactoryGirl.create(:artist, name: "foo").boards << board
end
end
end