Factory_bot との関連付けを指定するにはどうすればよいですか?
概要
たとえば、ユーザーと投稿という 2 つのモデルがあります。投稿はユーザーに属しており、ユーザーには多数の投稿があります
#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)
投稿の user_id は 1 であると予想されますが、事前に別のユーザーを作成しており、user_id は 2 です。
Factory_bot / Factory_girl でオブジェクトを作成するときに、関連付けを指定するにはどうすればよいですか?
解決策
FactoryBot の関連付けは、明示的関連付けと暗黙的関連付けの両方で指定できます。少なくともバージョンfactory_bot-6.2.0以降
暗黙的な関連付けではなく、明示的な関連付けを使用する必要があります。
#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://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md#associations