我有两张表如下:
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
但没有任何作用。有什么想法吗?
答案 0 :(得分:0)
你做了一个关联,而不是你在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
end