当我运行rails db:migrate 时,迁移无法完全正常工作


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"在哪里,为什么它没有显示在我的模式的messages表下。

我已经检查了迁移状态,并且所有迁移都已运行。

如果您在迁移文件中运行了类似的程序

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

消息表已创建,在此之后,您无法使用create_table :messages创建另一个迁移。就像@Marek Lipka在评论中写道的那样。要么您需要回滚CreateMessages迁移和机会文件,然后再次运行迁移。或者您需要编写另一个迁移来更改现有的表,如下所示。

class AddBodyAndUserIdToMessages < ActiveRecord::Migration[5.2]
def change
add_column :messages, :body, :text
add_column :messages, :user_id, :integer
end
end

最新更新