2017-08-27 26 views
1

我有一個Post,Image和Video模型,我需要對Post,Image和Video之間的關聯進行建模。圖像和視頻媒體應屬於郵政。我還需要郵寄記錄才能通過調用@ post.post_media來獲取所有相關的post_media。Rails關聯 - 特定案例

我需要這些測試通過:

context "viedos" do 
    let(:post) { create(:post) } 
    let(:video) { create(:video) } 

    it "can associate and video" do 
    post.videos << video 
    expect(post.videos.last).to eql(video) 
    end 

    it "can create an associated video" do 
    video_attributes = attributes_for(:video) 
    post.videos.create(video_attributes) 
    expect(post.videos.last.attributes).to include(video_attributes.stringify_keys) 
    end 

    it "can create associated video as post_media" do 
    post.post_media.create(medium: video) 
    expect(post.videos.last).to eql(video) 
    end 
end 

context "post_media" do 
    let(:post) { create(:post) } 
    let(:video) { create(:video) } 
    let(:image) { create(:image) } 

    before do 
    post.videos << video 
    post.images << image 
    end 

    it "should return all post related media" do 
    expect(post.post_media.count).to eql(2) 
    expect(post.post_media.map(&:medium)).to match_array([video, image]) 
    end 
end 

我感謝你的幫助:)

回答