Один раз изменить атрибут модели (имя столбца) в Ruby on Rails - PullRequest
5 голосов
/ 05 июня 2011

Я создал модель с атрибутом «имя», но я хочу изменить его на «имя пользователя».Все, что я читал о миграции баз данных, включает в себя создание класса или каких-то сложных вещей.Все, что я хочу сделать, это эквивалент «UPDATE TABLE» в SQL.Как запустить одноразовую миграцию базы данных, чтобы изменить это?Я предполагаю, что это будет связано с консолью rails, а затем какой-нибудь командой?

Ответы [ 3 ]

9 голосов
/ 05 июня 2011

Первый:

rails g migration rename_name_column_to_username

Затем в сгенерированном файле миграции rename_name_column_to_username.rb:

class RenameNameColumnToUsername < ActiveRecord::Migration
  def self.up
    rename_column :users, :name, :username
  end

  def self.down
    rename_column :users, :username, :name
  end
end

А потом rake db:migrate

3 голосов
/ 05 июня 2011

Если вы не зафиксировали код, который изначально создал столбец «имя», вы можете просто перейти к старому файлу миграции, который создал этот столбец, изменить name на username и затем заново создать схему.

Но если вы зафиксировали код, вам следует создать отдельный файл миграции, который переименует name в username.

.Поэтому вам никогда не следует использовать SQL вручную (ALTER TABLE ...) для изменения схемы.

0 голосов
/ 05 июня 2011

Запустите rails g migration RenameNameToUsername, что создаст новый файл в db/migrate.

Откройте этот файл и добавьте его в раздел self.up:

rename_column :tablename, :name, :username

Затем запустите rake db:migrate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...