Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 模型中引用同一模型的两个fileld_Ruby On Rails_Ruby On Rails 4_Activerecord - Fatal编程技术网

Ruby on rails 模型中引用同一模型的两个fileld

Ruby on rails 模型中引用同一模型的两个fileld,ruby-on-rails,ruby-on-rails-4,activerecord,Ruby On Rails,Ruby On Rails 4,Activerecord,我有Matchmodel和Playermodel。 现在我想在Match中添加两个字段,如:playerne和playertwo。 我想playeron引用特定的Player对象和Player两个也引用另一个Player对象 我试过这样的方法: rails g model Match player:references 但这样我只能创建一个字段。我无法为此字段创建自定义名称 或者我可以创建playerne:integer文件,并将玩家id(在控制器中)放在这里。但是这样可以吗 如果每场比赛都只

我有
Match
model和
Player
model。 现在我想在
Match
中添加两个字段,如:
playerne
playertwo
。 我想
playeron
引用特定的
Player
对象和
Player两个
也引用另一个
Player
对象

我试过这样的方法:

rails g model Match player:references
但这样我只能创建一个字段。我无法为此字段创建自定义名称


或者我可以创建
playerne:integer
文件,并将玩家id(在控制器中)放在这里。但是这样可以吗

如果每场比赛都只有2名球员,可以创建player\u one\u id:integer和player\u two\u id:integer字段。在匹配模型中,您只需要

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 %>
此模型的模型cmdline生成器如下所示

rails g model Match player_one_id:integer:index player_two_id:integer:index
rails g model Match player_one_id:integer:index player_two_id:integer:index