2015-01-18 4 views
2

В настоящее время я работаю над проектом ROR. Я создал эшафот для Notes и выполнил миграцию для него. Однако теперь у нас была небольшая смена планов, и я хочу вернуть приложение в исходное состояние. Поэтому я запускаю rails scaffold, чтобы уничтожить заметки, и поэтому у меня все файлы были стерты. Но у меня все еще есть файл schema.rb с заданной миграцией таблицы Notes. Как мне избавиться от него, не изменяя вручную этот файл (который считается плохой практикой)? Если я сгенерирую модель Notes и запустил миграцию, этот файл будет обновляться, и все будет хорошо? Или могут быть конфликты? Я попытался запустить rake db: reset. Кажется, это не сработало. Но все же в конце процесса я получил это сообщение.Как вернуть базу данных обратно в исходное состояние в рельсах?

Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"thenotesapp", "pool"=>5, "username"=>"thenotesapp", "password"=>"thenotesapp"} 
-- enable_extension("plpgsql") -> 0.0367s 
-- create_table("notes", {:force=>:cascade}) -> 0.0628s 
-- initialize_schema_migrations_table() -> 0.0276s 
-- enable_extension("plpgsql") -> 0.0251s 
-- create_table("notes", {:force=>:cascade}) -> 0.0157s 
-- initialize_schema_migrations_table() -> 0.0012s 

schema.rb остается как этот помост уничтожил

ActiveRecord::Schema.define(version: 20150114071920) do 

    # These are extensions that must be enabled in order to support this database 
    enable_extension "plpgsql" 

    create_table "notes", force: :cascade do |t| 
    t.string "title" 
    t.text  "text" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

end 
+0

Попробуйте 'rake db: drop db: create db: migrate', чтобы получить свежий' schema.rb'. – Kris

+0

Редактирование миграции - это плохая практика по причине: уже развернутые приложения должны иметь возможность обновлять свою схему при обновлении. Если приложение еще не развернуто нигде, и вы изучаете, нет никакого вреда в изменении миграции. –

+0

Вы получили его? –

ответ

2

Чтобы удалить базу данных, вы должны во-первых, установить его, как вы сказали начального состояния - для этого выполните команду:

rake db:migrate VERSION=0 

Следующим шагом будет удаление всех файлов миграции (/db/migrate) вручную.

Вот и все - у вас есть чистый schema.rb, не содержащий таблиц.

+0

извините..почему здесь .. мысль вышеуказанный предназначенный принимаю ответ. Виноват. По достоинству оценил бы мой вопрос, если вы считаете его действительным. Благодарю. – vinibol12

0

rake db:drop db:create db:migrate db:seed

1

Сначала отбросьте базу данных:

rake db:drop 

Затем создать БД:

rake db:create 

После этого мигрирует таблиц:

rake db:migrate 

Если вы хотите, чтобы заполнить базу данных , затем:

rake db:seed 
Смежные вопросы