Команда для изменения столбца БД в Ruby on Rails - PullRequest
2 голосов
/ 20 декабря 2010

Можно ли выполнить быструю консольную команду, чтобы изменить тип объекта, который у меня есть? В настоящее время это тип Ruby Date, но я бы хотел, чтобы он был типом Ruby Time.

Я начал с этой команды скаффолда:

$ rails generate scaffold Post title:string content:text postdate:date

Но хотелось бы, чтобы я сделал следующее:

$ rails generate scaffold Post title:string content:text postdate:time

Есть ли команда и можно ли выполнить обновление?

Ответы [ 3 ]

3 голосов
/ 20 декабря 2010

Иногда вам приходится писать какой-то реальный код, даже в Rails.Попробуйте создать миграцию и затем использовать метод change_column.Что-то вроде

change_column :my_table, :my_column, :new_type

Вы помещаете это в файл переноса БД, а не в оболочку.

2 голосов
/ 20 декабря 2010

Если вы не хотите, чтобы ошибка была постоянной частью набора миграции, просто перенеситесь вниз (rake db:rollback), отредактируйте файл миграции и снова перенесите его (rake db:migrate).

Редактировать : Чтобы ответить на ваш вопрос о существовании одной команды? Да, есть. После редактирования вашей миграции:

rake db:migrate:redo

Это запускает "вниз", а затем "вверх" только в одной команде.

0 голосов
/ 07 апреля 2016

Три шага для изменения типа столбца:

Шаг 1:

Создайте новый файл миграции, используя этот код:

rails g migration sample_name_change_column_type

Шаг 2:

Перейдите в папку /db/migrate и отредактируйте созданный вами файл миграции. Есть два разных решения.

  1. def change
        change_column(:table_name, :column_name, :new_type)
    end
    

2

    def up
        change_column :table_name, :column_name, :new_type
    end

    def down
        change_column :table_name, :column_name, :old_type
    end

Шаг 3:

Не забудьте выполнить эту команду:

rake db:migrate

Я протестировал это решение для Rails 4, и оно хорошо работает.

...