2012-11-12 22 views
24

bir miras kullanıcı modeli ile fabrikalar tanımlamak için . Ve yazmaya devam et, kendinizi tekrar etmeyin.nasıl sorunu şu var

FactoryGirl.define do 
    factory :user do 
    name "name" 
    bla "bla" 

    factory :custom_user do 
     customfield "customfield" 
    end 
    end 
end 

Bu benim için işe yaramıyor çünkü sınıf da "Kullanıcı". "Kullanıcı" ile geçersiz bir hata aldım çünkü özel alanlar burada açık değil. Böyle bir şeyi çözmek için iyi bir uygulama, yol veya yöntem var mı?

cevap

44

Bu deneyebilirsiniz:

factory :user do 
    name "name" 
    bla "bla" 
end 

factory :custom_user, class: CustomUser, parent: :user do 
    customfield "customfield" 
end 

Daha fazla bilgi için: Inheritance.

+1

evet o ebeveyn ile çalıştı ... ama sınıf eklemek gerekir: CustomUser -> (fabrika: custom_user, sınıf: CustomUser, ebeveyn: kullanıcı) – bulleric

+0

Bu benim için arıyordu tam cevap benim sorunum. Keşke bunu birden çok kez yapabilirdim. –

11

Sadece şu sınıfı ekleyin: CustomUser to: custom_user factory. Bu benim için çalışıyor. İç içe yerleştirdiğinizde: kullanıcı, üst öğenin Kullanıcı olduğu anlamına gelir, ancak daha basittir.

FactoryGirl.define do 
    factory :user do 
    name "name" 
    bla "bla" 

    factory :custom_user, class: CustomUser do 
     customfield "customfield" 
    end 
    end 
end