すべてのファクトリについて、ディスクからイメージをロードするUser
入れ子を作成する必要があります。Photo
ファイル名をユーザー ファクトリの属性として宣言するだけで、このコードを単純化するにはどうすればよいでしょうか。
このコードにも問題があり、おそらく後の最初のユーザーのために、 :women factory ファイル名をavatar1.jpg
ではなくとして保存しています。avatar2.jpg
FactoryGirl.define do
factory :user do
email 'john@site.com'
country 'US'
after(:create) do |user, evaluator|
photo_file = 'avatar1.jpg'
photo_object = File.new(File.join(::Rails.root.to_s, "/factories/images", photo_file), 'rb')
user.photos << FactoryGirl.build(:photo, photo: photo_object, user: user)
user.avatar_id = user.photos.first.id
user.save
end
factory :woman do
email 'annie@site'
after(:create) do |user, evaluator|
photo_file = 'avatar2.jpg'
photo_object = File.new(File.join(::Rails.root.to_s, "/factories/images", photo_file), 'rb')
user.photos << FactoryGirl.build(:photo, photo: photo_object, user: user)
user.avatar_id = user.photos.first.id
user.save
end
end
end
end
これがモデル関係
# user.rb
has_many :photos, dependent: :destroy
# photo.rb
belongs_to :user
何か助けはありますか?