2017-05-16 1 views
1

공장의 힙이처럼 어디 프로젝트가 :FactoryGirl 만드는 변수

FactoryGirl.define do 
    factory :terms_document do 
    created_by { FactoryGirl.create(:user) } 
    updated_by { FactoryGirl.create(:user) } 
    ... 
    end 
end 

어떻게 내가 공장 전반에 걸쳐 사용할 수있는 시작에 하나의 사용자를 만들려면 어떻게해야합니까?

답변

1

당신은 공장 파일에 캐시 방법을 추가 할 수 있습니다 :

def user 
    @user ||= FactoryGirl.create(:user) 
end 

FactoryGirl.define do 
    factory :terms_document do 
    created_by user 
    updated_by user 
    ... 
    end 
end 

업데이트을 :

아름답다
def user(term_document) 
    @users ||= {} 
    @users[term_document] ||= FactoryGirl.create(:user) 
end 

FactoryGirl.define do 
    factory :terms_document do 
    ... 
    after(:build) do |term_document| 
     created_by user(term_document) 
     updated_by user(term_document) 
    end 
    end 
end 
+0

, 감사 :이 경우 서로 다른 공장 인스턴스에 대해 다른 사용자가 필요합니다. 한 가지 질문 - 사용자가 속해야하는 회사를위한 공장이라면'user.company'가 회사를 지칭하도록 외부 ID를 어떻게 설정하겠습니까? – Mirror318

+0

귀하의 질문을 바로 이해한다면 모든 회사 객체가 하나의 사용자 객체 만 사용하고 두 개의 다른 회사는 서로 다른 사용자를 사용해야합니다 (하나의 사용자 객체는 두 개의 다른 회사에 속할 수 없기 때문에). –

+0

다른 회사가 필요합니다. 각 회사마다 서로 다른 사용자가 있어야합니다. 그러나 회사 내 사용자에 대한 모든 참조는 생성되는 사용자의 수를 줄이기 위해 동일한 사용자 여야합니다. 이것이 가능한가? – Mirror318