我有点难以理解如何联系我的一些模特。希望得到一些指示或想法!
假设我有3个模型,名为“MinorTeam”,“MajorTeam”和“Game”。每个游戏都参考两个团队;但我如何指定它是主要还是次要的团队?
has_one :team_1, :class_name => "MajorTeam"
# or
has_one :team_1, :class_name => "MinorTeam"
两个团队模型大不相同,因此我不能简单地向团队模型添加主要/次要标志。有什么想法吗?
答案 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_one
为belongs_to
,因为has_one
意味着每个团队只属于一个游戏,这似乎可能不正确。如果我弄错了,请告诉我。