让我来描述我想做的事情:
有一个比赛模型,应该有关于哪些球员和哪些部族参加比赛的信息,包括主场球员和战队以及客场和战队。
这很简单,但还有另一种模式:召唤师。在每场比赛中,每个球员都有不同的召唤者,我需要做这样的事情:Match.find(1).players_home.find(1).Summoner.name
提取哪个召唤者在主队中扮演球员1。
关键是:每场比赛中的每个球员都可以使用不同的召唤者
我希望我能清楚地描述它
问候。
答案 0 :(得分:1)
我不确定你关于协会何时是一个或几个的所有规范,但我认为这样的事情可能就是这样:
class Match
has_many :participations
has_many :players, :through => :participations
end
class Participation
belongs_to :match
belongs_to :player
belongs_to :summoner
# also a team attribute to store either "home" or "away"
scope :home, where(:team => "home")
scope :away, where(:team => "away")
end
class Player
belongs_to :clan
has_many :participations
has_many :matches, :through => :participations
end
class Summoner
has_many :participations
end
在此设置中,每场比赛都有几次参赛。每次参与都属于参与的玩家,也属于该玩家和比赛的召唤者。然后它可以像这样使用:
在控制器
中@match = Match.find(1)
@home_participations = @match.participations.home
@away_participations = @match.participations.away
在视图中
<h1>Home Players</h1>
<% @home_participations.each do |p| %>
<p>Player: <%= p.player.name %>, Summoned by: <%= p.summoner.name %></p>
<% end %>
我希望这至少与你的目标有关。如果您正在寻找其他内容,请告诉我。