2014-09-13 3 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

Какие текущие внешние ключи? –

ответ

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 

Я думаю, что это должен сделать это, попробуйте его на тест db в первую очередь.

Смежные вопросы