0

我正在尝试一些非常简单的事情。此时我有三个模型:

Player >> PlayerMatch >> Match

class Match < ActiveRecord::Base
  attr_accessible :date, :goals_team_a, :goals_team_b
  has_many :PlayerMatches
  has_many :Players, :through => :PlayerMatches
end

class Player < ActiveRecord::Base
  attr_accessible :name, :password_confirmation, :password, :user
  has_many :PlayerMatches
  has_many :matches, :through => :PlayerMatches
end

class PlayerMatch < ActiveRecord::Base
  attr_accessible :match_id, :player_id, :team
  belongs_to :player
  belongs_to :match
end

模型 PlayerMatch 是连接实体。在每场比赛中,一名球员可以在 A 队或 B 队,这就是为什么我在 PlayerMatch 上制作了该属性球队。

如何为每场比赛设置价值团队?我想做类似的事情:

p = Player.new
//set players attributes
m = Match.new
//set match attributes

p.matches << m

现在我只想让他的球队参加那场特定的比赛。

提前致谢!

4

1 回答 1

0

使用您设置的模型,您可以执行以下操作:

p = Player.create
m = Match.create
pm = PlayerMatch.create(:player => p, :match => m, :team => 'Team')

如果您希望像示例中那样自动创建 PlayerMatch,您可以在之后检索它并在此时设置团队:

p = Player.create
m = Match.create
p.matches << m

pm = p.matches.where(:match_id => m.id).first
pm.update_attributes(:team => 'Team')

除非您说单个玩家可以为不同的球队参加不同的比赛,否则您似乎可能希望球员属于一个球队。

这篇文章也有一些与这个问题相关的信息。

于 2012-12-21T04:21:40.687 回答