0

Я использую Rails 4.0 и Ruby 2.3.0Невозможно удалить таблицы в schema.rb из rails app

У меня есть небольшое приложение Rails. Сначала я хотел назначить разные роли каждому пользователю на основании того, для чего он/она зарегистрировался. Так что я опробовал драгоценный камень «Royce» от https://github.com/MartinJNash/Royce

Я удалил его, увидев, что это слишком сложно для моих требований.

Затем я попробовал камень «простых ролей», чтобы посмотреть, как это работает отсюда https://github.com/stanislaw/simple_roles. Я тоже удалил tat. Я побежал db: мигрировать, когда у меня были эти 2 камня в моем приложении.

Теперь мне не нужны соответствующие таблицы из этих двух драгоценных камней в моем schema.rb. Это не совсем мешает моему приложению, но я бы хотел их удалить.

Ниже мой schema.rb файл

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

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

    create_table "roles", force: :cascade do |t| 
    t.string "name" 
    t.integer "resource_id" 
    t.string "resource_type" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

add_index "roles", ["name", "resource_type", "resource_id"], name: "index_roles_on_name_and_resource_type_and_resource_id", using: :btree 

add_index "roles", ["name"], name: "index_roles_on_name", using: :btree 

    create_table "royce_connector", force: :cascade do |t| 
    t.integer "roleable_id", null: false 
    t.string "roleable_type", null: false 
    t.integer "role_id",  null: false 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

    add_index "royce_connector", ["role_id"], name: "index_royce_connector_on_role_id", using: :btree 
    add_index "royce_connector", ["roleable_id", "roleable_type"], name: "index_royce_connector_on_roleable_id_and_roleable_type", using: :btree 

    create_table "royce_role", force: :cascade do |t| 
    t.string "name",  null: false 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

    add_index "royce_role", ["name"], name: "index_royce_role_on_name", using: :btree 

    create_table "sessions", force: :cascade do |t| 
    t.string "session_id", null: false 
    t.text  "data" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

    add_index "sessions", ["session_id"], name: "index_sessions_on_session_id", unique: true, using: :btree 
    add_index "sessions", ["updated_at"], name: "index_sessions_on_updated_at", using: :btree 

    create_table "users", force: :cascade do |t| 
    t.string "email" 
    t.string "name" 
    t.string "login_token" 
    t.datetime "login_token_valid_until" 
    t.datetime "created_at",    null: false 
    t.datetime "updated_at",    null: false 
    end 

    create_table "users_roles", id: false, force: :cascade do |t| 
    t.integer "user_id" 
    t.integer "role_id" 
    end 

add_index "users_roles", ["user_id", "role_id"], name: "index_users_roles_on_user_id_and_role_id", using: :btree 

create_table "vendors", force: :cascade do |t| 
    t.string "name" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
end 

    create_table "visits", force: :cascade do |t| 
    t.string "country" 
    t.datetime "visited_at" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    end 

end 

Даже если у меня есть не-установлены 2 ролям камней, каждый раз я запускаю грабли БД: мигрировать, я получаю вышеуказанную схему.

Я использую только таблицы «сеансы» и «продавцы» в своем приложении. Любая идея, что я должен сделать, чтобы избавиться от этих нежелательных таблиц?

ответ

0

Во-первых, проверьте, если таблица присутствует ... в рельсах консоли ...

##to view all tables 
ActiveRecord::Base.connection.tables 

я использовать rails console для удаления таблиц непосредственно ...

ActiveRecord::Base.connection.execute("drop table table_name") 
    ###========OR=============== 
    ActiveRecord::Migration.drop_table(:table_name) 
    ###=========OR=============== 
    ActiveRecord::Migration.drop_table("table_name")  

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

Надеется, что это помогает :)

+0

Привет, все 3 команды дают ошибку "": команда не найдена .. Также я уже удалил файлы миграции, связанные с этими таблицами. Но они генерируются каждый раз, когда я запускаю rake db: migrate. Любые идеи wat я сделал неправильно? – neutralCreep

+0

... dd вы запускаете команду в rails console .. используя рельсы c ... @ user6525564 – Milind

+0

проверьте, присутствует ли таблица .. я обновил свой ответ ... @ user6525564 – Milind

0

Загляните в ваш каталог app/db/migrate. Найдите и удалите миграции, связанные с этими драгоценными камнями.

После удаления файлов миграции вы можете снова запустить rake db:migrate. Затем запустите rake db:schema:dump и проверьте вновь созданный файл schema.rb, чтобы убедиться, что вы не сохранили таблицы для удаленных драгоценных камней.

+0

После удаления миграции, связанную с этими драгоценными камнями вы можете просто удалить schema.rb и development.sqlite3 файл затем запустить грабли БДА: мигрировать. Это удалит всю связь с теми камнями, которые вы удалили. – mayorsanmayor

+0

Привет, У меня есть только два файла миграции, связанные с «поставщиками» и «сеансами». У меня нет каких-либо других файлов миграции ... И также я использую postgres. Может быть, я должен установить графический инструмент postgres и посмотреть на это? Я также попытался удалить schema.rb, а затем запустить db: migrate. Дополнительные таблицы по-прежнему сохраняются. – neutralCreep

+0

Когда вы пытаетесь перезапустить свои миграции, это 'rake db: migrate' все, что вы делаете, или вы запускаете другие задачи rake? – MarsAtomic

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

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