2014-04-21 3 views
0

나는 playlist entriesepisodes입니다. 각 재생 목록 항목은 에피소드를 가리 킵니다. 각 에피소드에는 지속 시간 (초)이 있습니다. 이제 공장 소녀와 함께 재생 목록 항목을 만들고 싶습니다. 그러나 start_timeduration of the episode에서 재생 목록 항목의 end_time을 계산해야합니다. 어떻게해야합니까? 나는이 코드를 시도했지만 작동하지 않습니다공장 아가씨와 종속 된 속성

FactoryGirl.define do 
    factory :playlist_entry_episode, class: PlaylistEntry do 
    start_time Faker::Business.credit_card_expiry_date 
    episode 
    end_time {start_time + self.episode.duration} 
    premiere false 
    channel_playlist 
    end 
end 

어떻게 자동으로 인해 episode 협회의 생성 된 에피소드의 기간을 액세스 할 수 있습니까?

이 공장을 사용하는 사양을 실행하면 NoMethodError: undefined method 'duration' for nil:NilClass이됩니다. self.episodenil이기 때문에 그럴 것이라고 생각합니다. 변형의

FactoryGirl.define do 

    factory :episode do 
    title Faker::Lorem.paragraph(1) 
    link Faker::Internet.url 
    pub_date Faker::Business.credit_card_expiry_date 
    guid Faker::Lorem.characters(10) 
    subtitle Faker::Lorem.paragraph(1) 
    content Faker::Lorem.paragraph(5) 
    duration Faker::Number.number(6) 
    flattr_url Faker::Internet.url 
    tags Faker::Lorem.paragraph(1) 
    icon_url Faker::Internet.url 
    audio_file_url Faker::Internet.url 
    cached false 
    local_path "" 
    filesize Faker::Number.number(6) 
    podcast 
    end 
end 

답변

2

하나는 before(:create) 블록

FactoryGirl.define do 
    factory :playlist_entry_episode, class: PlaylistEntry do 
    start_time Faker::Business.credit_card_expiry_date 
    episode 
    premiere false 
    channel_playlist 

    before(:create) do |entry| 
     entry.end_time = entry.start_time + entry.episode.duration 
    end 
    end 
end 
+0

감사를 사용하는 것입니다

여기 episode 내 공장입니다! 잘됐다. – funkenstrahlen