Rails 3模型关系

时间:2013-01-20 00:00:36

标签: ruby-on-rails relationship rails-activerecord

我有点难以理解如何联系我的一些模特。希望得到一些指示或想法!

假设我有3个模型,名为“MinorTeam”,“MajorTeam”和“Game”。每个游戏都参考两个团队;但我如何指定它是主要还是次要的团队?

has_one :team_1, :class_name => "MajorTeam"
# or 
has_one :team_1, :class_name => "MinorTeam"

两个团队模型大不相同,因此我不能简单地向团队模型添加主要/次要标志。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

多态关联应该有效。您可能需要稍微调整一下才能使其正确,但通过使用它们,除了拥有游戏之外,团队类不必是任何

module Team
  extend ActiveSupport::Concern
  included do
    has_many :home_games, :class_name => "Game", :as => :team_1
    has_many :away_games, :class_name => "Game", :as => :team_2
  end
end

class MajorTeam < ActiveRecord::Base
  include Team
end

class MinorTeam < ActiveRecord::Base
  include Team
end

class Game < ActiveRecord::Base
  belongs_to :team_1, :polymorphic => true
  belongs_to :team_2, :polymorphic => true
end

我假设你的意思是has_onebelongs_to,因为has_one意味着每个团队只属于一个游戏,这似乎可能不正确。如果我弄错了,请告诉我。