2016-08-31 11 views
0

私は、Railsアプリケーションにある3つのモデルの最良の関係構造を決定しようとしています。2つの親のうちの1つに属するモデル

モデルは、候補者、雇用者、およびビデオです。

ビデオが雇用者に属し、他の人が候補になることがあります。このため、私は雇用者と候補者の両方にビデオに外国キーを付けるのが嫌いです。なぜなら、それは間違っていると感じるからです。

以下のコードの問題は、ビデオがでないことです。には多数の候補がありますが、belongs_toとの関係はできません。より良い方法は何ですか?

class Video < ActiveRecord::Base 
    has_many :video_candidates 
    has_many :candidates, :through => :video_candidates 
end 

class Candidate < ActiveRecord::Base 
    has_many :video_candidates 
    has_many :videos, :through => :video_candidates 
end 

class VideoCandidate < ActiveRecord::Base 
    belongs_to :candidate 
    belongs_to :vieo 
end 

編集:多形性協会が行く方法です。私は私の解決策を以下に載せるつもりです。これが誰かを助けることを望みます。

class Video < ActiveRecord 
    belongs_to :watchable, polymorphic: true 
end 

class Candidate < ActiveRecord::Base 
    has_many :videos, as: :watchable 
end 

class Employer < ActiveRecord::Base 
    has_many :videos, as: :watchable 
end 

と移行

class CreateVideos < ActiveRecord::Migration[5.0] 
    def change 
    create_table :videos do |t| 
     t.string :title 
     t.belongs_to :watchable, polymorphic: true 

     t.timestamps 
    end 
    add_index :videos, [:watchable_id, :watchable_type] 
    end 
end 

答えて

関連する問題