2016-06-20 3 views
1

와 팩토리 객체를 생성하기 3 모델내가 가진 여러 협회

class Account 
end 

class AccountType 
end 

class Lookup 
end 

내가 생성 ACCOUNT_TYPE의 값을 사용하고자하는 두 번째 공장의 경우

1 factory :account_test, class: 'Account' do 
    2  sequence(:name) {|i| "Account #{i}"} 
    3  association :account_type, factory: :account_type_with_data 
    4  association :lookup, factory: :lookup_value_with_account_type 
    5  active "1" 
    6 end 
    7 
    8 factory :lookup_value_with_account_type, class: 'Lookup' do 
    9 association :account_type, ???????? 
    10 end 

나는이 공장을 만들려면 공장에서 9 호선을 위해 3 호선을 입력하십시오. 어떻게해야합니까?

답변

1

transient 블록과 after 콜백을 조사하고 싶습니다.

나는 최근에 생성 된 의 속성을 가져 와서이 이벤트를 생성하고 이벤트 세션 게시에 사용하는이 공장에서 비슷한 작업을 수행합니다.

호프가 도움이되었거나 올바른 방향으로 안내해 줄 수 있기를 바랍니다.

# Usage Notes: 
# Use create(:event_session, create_post: true) to create associated event session post using event_session's title and body. 

FactoryGirl.define do 
    factory :event_session do 

    transient do 
     event_session nil 
     create_post false 
    end 

    name {Faker::Commerce.product_name} 
    description { Faker::Company.catch_phrase + '. ' + Faker::Company.catch_phrase } 
    start_date_time { Time.now } 
    end_date_time { Time.now + 1.hours } 
    track_name { Faker::Company.catch_phrase } 
    session_type { Faker::Commerce.product_name } 
    room_name { Faker::Commerce.product_name } 
    sponsor { create(:sponsor) } 
    display_rank [*1..100].sample 
    event { create(:event, :random)} 
    sequence(:client_id) { |n| "client_id_#{n}" } 

    after(:create) do |event_session, evaluator| 
     create(:post, event_session: event_session, title: evaluator.name, body: evaluator.description) if @overrides.present? && @overrides[:create_post] || evaluator == true 
    end 

    end 
end