2014-09-13 62 views
0

我有以下表格。如何更改连接表上的外键?

class Reward ActiveRecord::Base 
    has_many :earned_rewards 
    has_many :players, :through => :earned_rewards 
end 

class EarnedReward < ActiveRecord::Base 
    belongs_to :reward 
    belongs_to :player 
end 

class Player < ActiveRecord::Base 
    has_many :earned_rewards 
    has_many :rewards, :through => :earned_rewards 
end 

我的问题是EarnedReward表上的外键是字符串类型,并且不符合Rails约定。我希望将Integer字段(player_id和reward_id)添加到EarnedReward表中以充当新的外键,同时保留旧字段及其值。

我正在使用Rails 4.1.1,我不确定如何完成此操作。

+0

什么是当前的外键? – 2014-09-13 01:57:42

回答

0

如果问题是,目前的外键具有默认的名称,然后创建一个迁移重命名的老油田,然后创建新的

class DoBlaBla < ActiveRecord::Migration 
    def change 
    change_table :earn_rewards do |t| 
     t.rename :player_id, :old_player_id 
     t.rename :reward_id, :old_reward_id 
     t.integer :player_id 
     t.integer :reward_id 
    end 
    end 
end 

我想这应该这样做,尝试在一个测试数据库第一。