属于两个父母之一的模型

时间:2016-08-31 16:24:13

标签: ruby-on-rails

我正在尝试为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

1 个答案:

答案 0 :(得分:1)

这是polymorphic association

的理想情况

另请参阅Railscast episode