2017-01-18 59 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

相關問題