2017-01-18 34 views
0

我首先创建最初的游戏模型,尚未完成。如何添加两个引用列来创建表迁移?

rails generate model game room:references p1turn:boolean secret:string wordsofar:string wrongtries:integer 

我现在正在编辑迁移文件以添加两个引用列或字段。该表应具有两列p1和p2,每列将引用用户模型或类。换句话说,这些列都将指向用户模型或记录。 P1代表球员和P2代表球员2.

我应该如何编辑生成的迁移文件,运行耙分贝前:迁移,实现上述目标?

class CreateGames < ActiveRecord::Migration[5.0] 
    def change 
    create_table :games do |t| 
     t.references :room, foreign_key: true 
     t.boolean :p1turn 
     t.string :secret 
     t.string :wordsofar 
     t.integer :wrongtries 
    end 
    end 
end 

我很感激任何帮助!谢谢!

+0

如果您还没有提交和运行迁移其确定对其进行编辑。 –

+0

感谢,但我需要知道的额外线在迁移文件中添加,以添加两个引用指向同一个表。 – kofhearts

+0

增加两列将不会是一个好主意,因为ü不会能找到所有用户在游戏中的一个查询 –

回答

1

您可以更改Migration文件,如下,增加两个integer columns player1 and player2

class CreateGames < ActiveRecord::Migration[5.0] 
    def change 
    create_table :games do |t| 
     t.references :room, foreign_key: true 
     t.boolean :p1turn 
     t.string :secret 
     t.string :wordsofar 
     t.integer :wrongtries 

     t.integer :player1 
     t.integer :player2 
    end 
    end 
end 

游戏类,可就是这样,

这belongs_to的两名球员引用User类。

class Game < ActiveRecord::Base 
    belongs_to :player1, :class_name => "User" 
    belongs_to :player2, :class_name => "User" 
end 

现在,用户类和玩家关系。

class User < ActiveRecord::Base 
    has_many :primary_players, :class_name => "Game", :foreign_key => "player1" 
    has_many :secondary_players, :class_name => "Game", :foreign_key => "player2" 
end 

在这里,我引用player1primary_playersplayer2secondary_players。现在

,你可以调用如,

User.first.primary_players

User.first.secondary_players

相关问题