0

공장 소녀 팩토리 정의가 올바르게되지 않고 오류가 발생하는 레일스 모델 관계가 있습니다.factory_girl - 레일에있는 다형성 연관

class MediaFile < ActiveRecord::Base 
    belongs_to :admin 
end 

class MediaFileMapping < ActiveRecord::Base 
    belongs_to :media_file 
    belongs_to :admin 
    belongs_to :mediable, :polymorphic => true 
end 

class Image < MediaFile 
    has_attached_file :media 
    # and other things 
end 

class ImageMapping < MediaFileMapping 
end 

class Fruit < ActiveRecord::Base  
    belongs_to :product 
    has_many :image_mappings, :as => :mediable 
    has_many :images, :class_name => "Image", :through => :image_mappings, :source => :media_file 

# and other things here 
end 

class Product < ActiveRecord::Base  
    has_many :fruits, :dependent => :destroy 
# other things here  
end 

저는 이것을 위해 공장을 작성하는 데 어려움을 겪고 있습니다. 여기

FactoryGirl.define do  
     factory :product do 
      fruit 
     end 

     factory :fruit do 
      association :image_mapping, factory: :media_file_mapping 
      association :image 
     end 

     factory :image, class: Image, parent: :media_file do 
     end 

     factory :image_mapping, class: ImageMapping, parent: :media_file_mapping do 
     end 

     factory :admin do 
     end 

     factory :media_file do 
      association :admin 
     end 

    factory :media_file_mapping do 
     media_file 
     admin 
    end 

end 

이이 문제를 해결하기 위해 공장을 통해

undefined method `image_mapping=' for #<Fruit:0xbcb8bfc> (NoMethodError) 

모든 방향을 새로운 제품을 만드는 방법에 대한 다음과 같은 오류를주고 다음과 같이 오류를

공장 시도 정의되어 줄 마지막 시도입니다 공장의 정의가 도움이 될 것입니다.

답변

1

과일 공장이 올바르지 않습니다.

구문 : 연관 : image_mapping, factory : : media_file_mapping 은 belongs_to 연관에 사용할 수 있습니다.

has_many 연결 (이 경우)을 처리 할 때 연관된 레코드를 공장 정의에 수동으로 추가해야합니다. 예 : 그것은 image_mapping 및 이미지 공장 이하가되도록

factory :fruit do 
     after(:create) do |fruit| 
      fruit.image_mappings << FactoryGirl.create(:image_mapping) 
      fruit.images << FactoryGirl.create(:image) 
     end 
     fruit.save 
    end 

또한 아마 과일 공장을 이동해야합니다. 이 방법은 과일 공장이 호출 될 때 해당 공장을 정의합니다.