ruby-on-rails - 如何指定与 factory_bot 的关联?
问题描述
例如,我有两个模型一个用户和一个帖子。一个帖子属于一个用户,一个用户有很多帖子
#spec/factories/post.rb
FactoryBot.define do
factory :post do
user
body Faker::Movie.quote
posted_at "2018-04-03 13:33:05"
end
end
#spec/factories/user.rb
FactoryBot.define do
factory :user do
first_name 'Jake'
end
end
在测试中使用 Rspec 我想这样做:
user = create(:user, first_name: 'Barry') #id 1
post = create(:post, user: user)
我希望 post 的 user_id 为 1,但它正在创建另一个用户,并且 user_id 为 2。
当您使用 factory_bot / factory_girl 创建对象时,如何指定关联?
解决方案
您应该使用explicit
关联而不是关联implicit
:
#spec/factories/post.rb
FactoryBot.define do
factory :post do
association :user # <<<--- here the change
body Faker::Movie.quote
posted_at "2018-04-03 13:33:05"
end
end
#spec/factories/user.rb
FactoryBot.define do
factory :user do
first_name 'Jake'
end
end
https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md#associations
推荐阅读
- python - 如何针对多个岭图绘制多个子图?(海运)
- angular - 带有 rxjs 问题的 Angular 11 - TS2769:没有重载匹配此调用
- android - Android撰写自定义主题颜色 - 文本颜色未选择主题颜色
- java - 如何在 Redis 中缓存嵌套字典以供用 Python 和 Java 编写的应用程序使用
- angular - Angular 9:放置文件未触发
- java - 从文件列表创建 zip(包括路径文件夹)
- asp.net-core - ASP.NET Core 中的开发证书身份验证问题
- reactjs - 在“POST”请求中,我的 createPost Thunk 函数给出错误 {type: "post/createPost/pending", payload: undefined}
- javascript - 切换到另一个后如何更改文本输入边框颜色
- python - 如何在 docker 中运行 pytorch 模型服务器?