2017-08-27 13 views
1

投稿、画像、動画のモデルがあり、投稿、画像、動画の関連付けをモデル化する必要があります。画像と動画メディアは投稿に属している必要があります。 @ post.post_mediaを呼び出すことによって、関連するすべてのpost_mediaを取得できるようにするために、post recordも必要です。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 

私はあなたの助けに感謝:)

答えて

0

これは、あなたがVideoを定義する単一テーブル継承、など、非常に近いが、全く同じではない探していますサブタイプがPostMediaであるImage

インターフェイスは全く同じではありませんが、オプションとして調査するには十分に近いようです。

http://api.rubyonrails.org/classes/ActiveRecord/Inheritance.html