我正在尝试为Rails应用程序中的三个模型决定最佳关系结构。
模特是候选人,雇主和视频。
有时视频属于雇主,有时候是候选人。因此,我不愿意在视频上为雇主和候选人提供外键,因为一个人永远都是零的感觉是不对的。
以下代码的问题是视频不有很多候选人,但我无法与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