首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在factory_girl中,如何指定与另一个工厂同名的属性?

问在factory_girl中,如何指定与另一个工厂同名的属性?
EN

Stack Overflow用户
提问于 2016-03-16 18:42:00
回答 1查看 95关注 0票数 1

我有两张表如下:

代码语言:javascript
复制
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       |

当我定义这个工厂

代码语言:javascript
复制
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),我得到了这个错误:

代码语言:javascript
复制
Position(#70280313353320) expected, got String(#70280311914580)

它似乎期待对象位置,因为工厂具有相同的名称。

我已经尝试了一些没有成功的改变,比如:

代码语言:javascript
复制
self.position 'Goalkeeper'

和

代码语言:javascript
复制
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

但什么都不管用。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-04-20 00:06:09

在FactoryGirl中,您做的是一个关联,而不是这样做的。这个错误告诉你它在期待一个位置模型,并且你已经给它分配了一个字符串。

代码语言:javascript
复制
FactoryGirl.define do
  factory :localized_position do
    position { create(:position) }
  end
end

或者可能是相反的情况,因为我不确定您是否在做STI或多态关联。这两个表中都有position_id,这似乎令人怀疑。

代码语言:javascript
复制
FactoryGirl.define do
  factory :position do
    localized_position { create(:localized_position) }
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36044337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档