2012-11-12 3 views
24

상속 사용자 모델에 공장을 정의 . 그리고 반복해서 쓰지 마세요.어떻게이 문제를 다음있어

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

    factory :custom_user do 
     customfield "customfield" 
    end 
    end 
end 

클래스가 "사용자"이기 때문에이 기능이 작동하지 않습니다. 사용자 정의 필드가 여기에 정의되어 있지 않으므로 "사용자"로 잘못된 오류가 표시됩니다. 그와 같은 것을 알기위한 좋은 습관, 방법 또는 방법이 있습니까?

답변

44

이 작업을 시도 할 수 있습니다 :

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

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

을 더 많은 정보 : Inheritance.

+1

은 참으로 그것은 부모와 함께 일 ...하지만 난 클래스 추가해야합니다 CustomUser을 -> (공장 : custom_user, 클래스 : CustomUser, 부모 : 사용자) – bulleric

+0

이 난을 찾고 정확히 답변입니다 내 문제. 내가 여러 번 upvote 수 있기를 바랍니다. –

11

CustomUser 클래스를 custom_user factory에 추가하기 만하면됩니다. 그것은 나를 위해 일합니다. 사용자가 중첩 된 경우 : 사용자는 상위가 사용자임을 의미하지만 더 간단합니다.

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

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