代码之家  ›  专栏  ›  技术社区  ›  Designer

Rails 5丢失迁移文件的自定义代码

  •  1
  • Designer  · 技术社区  · 6 年前

    我的一个迁移文件消失在蓝天下··我想我需要手动重写它。°度

    这是我在schema中的内容。该表的rb

     +  create_table "collections", force: :cascade do |t|
     +    t.string "title"
     +    t.string "description"
     +    t.bigint "designer_id"
     +    t.datetime "created_at", null: false
     +    t.datetime "updated_at", null: false
     +    t.index ["designer_id"], name: "index_collections_on_designer_id"
     +  end
    

    那么,我的自定义迁移应该如下所示吗?

      def change
        create_table :collections do |t|
          t.string :title
          t.string :description
          t.integer :designer_id
    
          t.timestamps
        end
      end
    

    我该怎么办 添加索引 ?

    非常感谢。

    -----------

    编辑解决方案构思

    我将添加到现有迁移文件中,而不是创建新文件。下面的代码应该可以完成这项工作,对吗?

    class AddSlugToCollections < ActiveRecord::Migration[5.1]
      def change
        create_table :collections do |t|
          t.string :title
          t.string :description
          t.integer :designer_id
    
          t.timestamps
        end
        add_index :collections, :designer_id
    
        add_column :collections, :slug, :string
        add_index :collections, :slug
      end
    end
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Ganesh    6 年前

    是的,如果您想再次保留相同的更改,那么您也应该添加索引。

    将迁移更改为,

      def change
        create_table :collections do |t|
            t.string :title
          t.string :description
          t.integer :designer_id
    
          t.timestamps
        end
        add_index :collections, :designer_id
      end
    
        2
  •  2
  •   Sujay Gavhane    6 年前

    @ganesh Navale是正确的。我想在这方面再补充一点。如果迁移已经运行,则使用旧迁移时间戳重命名新迁移时间戳。您可以从以下位置获取旧的迁移时间戳 rake db:migrate:status 命令