如何添加两个引用列以创建 table 迁移?
How to add two references column to create table migration?
我首先创建尚未完成的初始游戏模型。
rails generate model game room:references p1turn:boolean secret:string wordsofar:string wrongtries:integer
我现在正在编辑迁移文件以添加两个引用列或字段。 table 应该有两列 p1 和 p2,每列将引用用户模型或 class。换句话说,这些列都将指向用户模型或记录。 p1 代表玩家 1,p2 代表玩家 2。
在 运行 rake db:migrate 之前,我应该如何编辑生成的迁移文件以实现上述目标?
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
感谢您的帮助!谢谢!
您可以如下更改 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
游戏class可以这样,
这 belongs_to 两名玩家引用用户 class。
class Game < ActiveRecord::Base
belongs_to :player1, :class_name => "User"
belongs_to :player2, :class_name => "User"
end
现在,用户 class 和玩家的关系。
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
这里我将 player1
引用为 primary_players
,将 player2
引用为 secondary_players
。
现在,您可以调用,
User.first.primary_players
User.first.secondary_players
我首先创建尚未完成的初始游戏模型。
rails generate model game room:references p1turn:boolean secret:string wordsofar:string wrongtries:integer
我现在正在编辑迁移文件以添加两个引用列或字段。 table 应该有两列 p1 和 p2,每列将引用用户模型或 class。换句话说,这些列都将指向用户模型或记录。 p1 代表玩家 1,p2 代表玩家 2。
在 运行 rake db:migrate 之前,我应该如何编辑生成的迁移文件以实现上述目标?
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
感谢您的帮助!谢谢!
您可以如下更改 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
游戏class可以这样,
这 belongs_to 两名玩家引用用户 class。
class Game < ActiveRecord::Base
belongs_to :player1, :class_name => "User"
belongs_to :player2, :class_name => "User"
end
现在,用户 class 和玩家的关系。
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
这里我将 player1
引用为 primary_players
,将 player2
引用为 secondary_players
。
现在,您可以调用,
User.first.primary_players
User.first.secondary_players