2013-12-12 2 views
0

나는 다음과 같은 공장이 있습니다

FactoryGirl.define do 
    sequence :api_name do |n| 
    "API_License_Name_#{n}" 
    end 

    factory :api_license do 
    name { FactoryGirl.generate(:api_name) } 
    description "Desc" 
    end 
end 

그러나이 개 특정 공장에 나는 다음과 같은 한을 :

FactoryGirl.define do 
    factory :scope_permission do 
     permission 
     action 
    end 
end 

"허가"와 "액션"두 공장은 둘 다 api_license와 관련이 있습니다. 예 :

FactoryGirl.define do 
    factory :action do 
    name "My Action" 
    api_license 
    end 
end 

권한 및 조치가 다른 api_licenses (두 개가 작성 중임)에 링크되는 것이 문제입니다.

동일한 API 라이센스와 관련되게하려면 어떻게해야합니까?

답변

0

콜백 또는 사용자 지정 생성자를 사용하여이 시나리오를 처리하려고한다고 생각합니다.

콜백을 사용하면 팩토리가 완료된 후 두 번째 연관을 생성하여 첫 번째 연관된 모델의 매개 변수에 액세스 할 수 있습니다.

가 여기에 문서의 : 사용자 정의 생성자와 https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#callbacks

(이 경우 필요할 수 있습니다), 당신은 ignore do 블록을 사용하고 이미 구축 한 물체로 연결을 만들 수 있습니다. 그것은 다음과 같이 보일 것이다 : 나는 아주 잘 이해하지 못하는 https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#custom-construction

+0

:

ignore do api_license create(:api_license) permission create(:permission, api_license: api_license) action create(:action, api_license: api_license) end initialize_with do new(permission: permission, action: action) end 

파일을 시작하기 당신이 공장 소녀에서해야 할 일을 아주 가까운 아니다 간단한 예제가있다. 공장마다 하나의 파일이 있습니다. 이 코드는 어디에서 실행해야합니까? – Tony

+0

죄송합니다.이 세그먼트를 래핑하는 코드를 표시하지 않았습니다. 내 스 니펫은 공장 내부로 간다. scope_permission do/end 블록은 공장의 내용이다. – geoffharcourt

+0

다음과 같은 오류가 발생합니다 : definition_proxy.rb : 35 :'add_attribute ': 잘못된 인수 수 (3 for 2) (ArgumentError) – Tony

관련 문제