2015-03-03 2 views
0

Интересно, есть ли способ быстро обновить имена столбцов после миграции в рельсах?Переименовать столбцы после миграции в рельсах

Например, в моей схеме, пользователь объект имеет столбец «user_name», и я изменил, что «имя» через миграцию ниже:

class FixColumnName < ActiveRecord::Migration 
    def change 
    rename_column :users, :user_name, :name 
    end 
end 

Тогда я побежал

rake db:migrate 

Однако в других файлах, например test/users_controller_test.rb, имя столбца все равно «имя_пользователя», и я должен изменить это вручную. Интересно, есть ли способ изменить имя навсегда?

+0

Если эта таблица была создана с использованием рельсов, и вы только начинаете с приложения, вы можете [использовать rails destroy] (http://stackoverflow.com/questions/4161357/how-do-i-reverse-a- rails-generate), чтобы отменить все поколение. –

+0

Спасибо, но я написал немало валидаций и тестов для модели и контроллера. Хотя я пытался изменить имена вручную, но когда я запускаю рейк-тест, есть много ошибок. Интересно, есть ли у рельсов механизм для такого переименования? – ralphxiaoz

+3

Механизм - это ваш редактор, отредактируйте свой код, чтобы использовать 'name' вместо' user_name'. –

ответ

1

Я не верю, что есть какой-либо способ, кроме уничтожения всего поколения, для этого, используя CLI.

Вы должны использовать свой редактор, чтобы найти или заменить или выполнить более совершенный рефакторинг. Например, в RubyMine, который я использую, существует довольно полная возможность рефакторинга. Вы можете прочитать об этом here.

Goodluck!

+0

Спасибо! Я вручную изменил все, и теперь он работает. – ralphxiaoz

0

Run vim some path/test/users_controller_test.rb на терминале Пресс бежать Тип: :%s/user_name/name/g хит введите побег снова, наберите :x и нажмите клавишу ВВОД

Если вы не хотите использовать Vim, я уверен, что есть способ в любом текстовом редакторе, который вы используете. Найдите и замените имя своего редактора в Google.

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