我有Match
模型,我有Player
模型。
现在,我想添加Match
两个字段,例如:playerone
和playertwo
。
我希望playerone
引用特定的Player
对象,而playertwo
也引用另一个Player
对象。
我正在尝试这样的事情:
rails g model Match player:references
但这样我只能创建一个字段。我无法为此字段创建自定义名称。
或者我可以创建playerone:integer
提交并放置此处玩家的ID(在控制器中)。但是可以吗?
答案 0 :(得分:2)
如果你每场比赛总是只有2名球员,可以创建player_one_id:integer和player_two_id:整数字段。在匹配模型中,您将只有
has_one :player_one, class_name: 'Player', primary_key: :player_one_id
has_one :player_two, class_name: 'Player', primary_key: :player_two_id
然后您可以从表单中设置这些
<%= f.collection_select :player_one_id, Players.all, :id, :name %>
<%= f.collection_select :player_two_id, Players.all, :id, :name %>
或以编程方式
@match.player_one = Player.find(1)
@match.player_two = Player.find(2)
此模型的模型cmdline生成器看起来像这样
rails g model Match player_one_id:integer:index player_two_id:integer:index