Contact と Phone というモデルに対して FactoryGirl でテスト用データを作っています。 contact.rb(1番目のコード)の afterコールバックの箇所がわかりません。
ruby
1after(:build) do |contact| 2 [:home_phone, :work_phone, :mobile_phone].each do |phone| 3 contact.phones << FactoryGirl.build(:phone, 4 phone_type: phone, contact: contact) 5 end 6end
ここが問題の箇所なのですが、
①contact.phones << の << とは、contact.phones という配列に FactoryGirl で作ったハッシュデータを代入しているということですか?これって別に配列じゃないと思うのですが、どうなのでしょう。
②contact.phones << (略) contact: contact
について、なぜ phone に contact の値をいれることができるのですか? contact の情報はすでに入っているとおもうのですが。
よろしくおねがいします。
ruby
1# spec/factories/contact.rb 2 3 FactoryGirl.define do 4 factory :contact do 5 firstname { Faker::Name.first_name } 6 lastname { Faker::Name.last_name } 7 email { Faker::Internet.email } 8 9 after(:build) do |contact| 10 [:home_phone, :work_phone, :mobile_phone].each do |phone| 11 contact.phones << FactoryGirl.build(:phone, 12 phone_type: phone, contact: contact) 13 end 14 end 15 end 16end
ruby
1#spec/factories/phone.rb 2 3FactoryGirl.define do 4 factory :phone do 5 association :contact 6 phone "111-222-333" 7 8 factory :home_phone do 9 phone_type "home" 10 end 11 factory :work_phone do 12 phone_type "work" 13 end 14 factory :mobile_phone do 15 phone_type "mobile" 16 end 17 end 18end 19コード
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。