2016-08-02 3 views
7

Я хочу удалить таблицу в моей схеме. Я создал базу данных при первом запуске проекта и удалении таблицы. Каков наилучший способ сделать это?Удаление таблицы из схемы - Rails

Я пробовал rails g migration drop table :installs, но это просто создает пустую миграцию?

Схема:

create_table "installs", force: :cascade do |t| 
    t.string "email",     default: "", null: false 
    t.string "encrypted_password",  default: "", null: false 
    t.string "reset_password_token" 
    t.datetime "reset_password_sent_at" 
    t.datetime "remember_created_at" 
    t.integer "sign_in_count",   default: 0, null: false 
    t.datetime "current_sign_in_at" 
    t.datetime "last_sign_in_at" 
    t.string "current_sign_in_ip" 
    t.string "last_sign_in_ip" 
    t.datetime "created_at",       null: false 
    t.datetime "updated_at",       null: false 
    end 

add_index "installs", ["email"], name: "index_installs_on_email", unique: true 
add_index "installs", ["reset_password_token"], name: "index_installs_on_reset_password_token", unique: true 
+2

Возможный дубликат [Rails DB Migration - Как удалить таблицу?] (Http://stackoverflow.com/questions/4020131/rails-db-migration-how-to-drop-a-table) –

+0

I ' d сказать, что это не совсем дубликат, так как это вопрос о схеме (даже если это не то, что нужно отредактировать). – jonlink

ответ

21

Если вы создаете пустой миграции, выполнив:
rails g migration DropInstalls
или:
rails generate migration DropInstalls

Вы можете добавить это в том, что пустой миграция:

class DropInstalls < ActiveRecord::Migration 
    def change 
    drop_table :installs 
    end 
end 

rake db:migrate Затем запустите в командной строке, которая должна удалить таблицу INSTALLs

+1

Этот ответ был бы более полным, если бы он указал, что схема - это автогенерированный файл и, следовательно, неправильная вещь, на которую нужно смотреть. – jonlink

4

Я считаю, что это самое простое в использовании Rails консоли к решению этой проблемы. Предположим, вы хотите удалить таблицу комментариев из приложения для блога. Вы можете сделать это, выполнив следующие задачи из командной строки (например, Terminal).

Шаг один:

$ rails console 

Шаг два:

$ ActiveRecord::Migration.drop_table(:comments) 

Шаг три:

$ rake db:migrate 

Go проверить ваши schema.rb видеть, что таблица была удалена.

+4

Это опасно плохой совет. Если вы сделаете это вручную, ваше производственное приложение не будет знать, что нужно отменить таблицу, и вы будете не в синхронизации, что может вызвать множество проблем. Правильный ответ - использовать миграцию для удаления таблицы. – brainbag

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

  • Нет связанных вопросов^_^