我正在尝试一些非常简单的事情。在这一点上,我有三个模型:
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
现在我只是想让他的球队参加那场比赛。
提前致谢!
答案 0 :(得分: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')
除非你说个别玩家可以为不同的队伍打不同的比赛,但似乎你可能希望玩家属于一个队伍而不是。
This post也有一些与此问题相关的信息。