Когда я запускаю rails db: migrate, миграция не работает полностью - PullRequest
0 голосов
/ 26 марта 2020
class CreateMessages < ActiveRecord::Migration[5.2]
  def change
    create_table :messages do |t|
      t.text :body
      t.integer :user_id
      t.timestamps
    end
  end
end

После запуска rails db: migrate моя схема выглядит следующим образом ...

ActiveRecord::Schema.define(version: 2020_03_20_063104) do

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

  create_table "users", force: :cascade do |t|
    t.string "username"
    t.string "password_digest"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

end

Мне интересно, где находится t.text "body", где находится t.integer "user_id" и почему это не так? t отображается в моей схеме под таблицей сообщений.

Я проверил состояние миграции, и все миграции были выполнены.

1 Ответ

0 голосов
/ 26 марта 2020

Если вы запустили что-то подобное в своем файле миграции

class CreateMessages < ActiveRecord::Migration[5.2]
  def change
    create_table :messages do |t|
      t.timestamps
    end
  end
end

Будет создана таблица сообщений, и после этого вы не сможете создать другую миграцию с create_table :messages. Как @Marek Липка написал в комментариях. Либо вам нужно откатить файл миграции и случая CreateMessages и снова запустить миграцию. Или вам нужно написать другую миграцию, чтобы изменить существующую таблицу следующим образом.

class AddBodyAndUserIdToMessages < ActiveRecord::Migration[5.2]
  def change
    add_column :messages, :body, :text
    add_column :messages, :user_id, :integer
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...