我有两张表如下:
POSITION TABLE:
POSITION_ID |SPORT_ID |PARENT_POSITION |SOURCE_ID |SOURCE_POSITION_NAME |
------------|---------|----------------|----------|---------------------|
1 |1 |1 |1 |Goalkeeper |
LOCALIZED_POSITION TABLE:
LOCALIZED_POSITION_ID |POSITION_ID |LOCALE_ID |POSITION |
----------------------|------------|----------|-----------------|
1 |1 |1 |Goalkeeper |当我定义这个工厂
FactoryGirl.define do
factory :localized_position do
position_id { Faker::Number.number(2) }
locale_id { Faker::Number.number(2) }
position 'Goalkeeper'
end
end然后调用FactoryGirl.create(:localized_position),我得到了这个错误:
Position(#70280313353320) expected, got String(#70280311914580)它似乎期待对象位置,因为工厂具有相同的名称。
我已经尝试了一些没有成功的改变,比如:
self.position 'Goalkeeper'和
FactoryGirl.define do
factory :localized_position do |f|
f.position_id { Faker::Number.number(2) }
f.locale_id { Faker::Number.number(2) }
f.position { 'Goalkeeper' + Random.rand(1..100).to_s }
end
end但什么都不管用。有什么想法吗?
发布于 2017-04-20 00:06:09
在FactoryGirl中,您做的是一个关联,而不是这样做的。这个错误告诉你它在期待一个位置模型,并且你已经给它分配了一个字符串。
FactoryGirl.define do
factory :localized_position do
position { create(:position) }
end
end或者可能是相反的情况,因为我不确定您是否在做STI或多态关联。这两个表中都有position_id,这似乎令人怀疑。
FactoryGirl.define do
factory :position do
localized_position { create(:localized_position) }
end
endhttps://stackoverflow.com/questions/36044337
复制相似问题