2012-11-12 7 views
24

mam następujący problem: W mojej aplikacji używać dziedziczenia do określenia mojego modelu użytkownika:jak zdefiniować fabryki z modelem użytkownika dziedziczenie

class User 
include Mongoid::Document 

field :name... 
field :bla... 
end 


class CustomUser < User 
field :customuserfield... 
end 

Jak mogę napisać fabryki mapować tej klasy hirachie w moich specyfikacji . I pisz dalej, nie powtarzaj się.

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

    factory :custom_user do 
     customfield "customfield" 
    end 
    end 
end 

Nie działa to dla mnie, ponieważ klasa jest także "użytkownikiem". W przypadku "Użytkownika" otrzymałem nieprawidłowy błąd, ponieważ pola niestandardowe nie są tutaj defiend. Czy istnieje dobra praktyka, sposób lub metoda, aby odświeżyć coś takiego.

Odpowiedz

44

Można spróbować to:

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

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

Aby uzyskać więcej informacji: Inheritance.

+1

tak to działało z rodzica ... ale muszę dodać klasę: CustomUser -> (fabryczne: custom_user, klasa: CustomUser, parent:: user) – bulleric

+0

To jest właśnie odpowiedź szukałem do mój problem. Chciałbym móc to powtórzyć wiele razy. –

11

Po prostu dodaj klasę: CustomUser do: custom_user factory. To działa dla mnie. Po zagnieżdżeniu w: user oznacza to, że rodzic jest użytkownikiem, ale jest prostszy.

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

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