【问题标题】:How to edit migration tables如何编辑迁移表
【发布时间】:2014-04-13 10:01:05
【问题描述】:

我创建了我的模型,然后用以下内容填充了我的迁移文件db/migration/234802843208_create_XXXXX_rb

class CreateXXXXX < ActiveRecord::Migration
  def change
    create_table :XXXXX do |t|

                t.string  :gender
        t.date    :date_of_birth
        t.string  :Marital_status
        t.string  :Spouses_name

我运行了 rake db:migrate。

现在我想编辑表格。我想更改 Marital_status 以采用布尔数据类型而不是字符串。有没有合适的方法来做到这一点?我可以直接编辑表格并重新运行 rake db:migrate 吗?您会建议我回滚、编辑然后重新迁移还是有更好的方法?

【问题讨论】:

    标签: ruby-on-rails database ruby-on-rails-4 rake migrate


    【解决方案1】:

    你可以这样做

    rake db:rollback
    

    rake db:migrate:down
    

    然后打开您的迁移文件并更新更改

    class CreateXXXXX < ActiveRecord::Migration
      def change
        create_table :XXXXX do |t|
    
            t.string  :gender
            t.date    :date_of_birth
            t.boolean  :Marital_status
            t.string  :Spouses_name
    
      end
    

    然后做rake db:migraterake db:migrate:up

    【讨论】:

      【解决方案2】:

      在这些情况下,我觉得很方便的是编辑文件,然后运行 ​​

      rake db:migrate:redo
      

      如果这不可能,我会建议回滚,然后在更新迁移类后迁移。

      【讨论】:

        【解决方案3】:

        您应该创建另一个迁移,并编辑该字段。

        rails g migration edit_xxxx_marital_status
        

        创建一个迁移文件。并在其中添加以下内容。

        class EditXXXXMaritalStatus < ActiveRecord::Migration
         def up
            change_column XXXXX. :Marital_status, :boolean, default: false # if you waNT TO add any default value
         end
        
         def down
           change_column :XXXXX, :Marital_status, :string 
         end
        end
        

        【讨论】:

        • 这似乎比其他答案更复杂。这种方法有什么优势?
        • 如果您必须在生产中执行相同的操作,并且表中有实时数据,那么通过回滚您将丢失数据。
        猜你喜欢
        • 2019-02-12
        • 2020-11-14
        • 2021-11-22
        • 2019-12-13
        • 2019-08-26
        • 2015-02-14
        • 1970-01-01
        • 1970-01-01
        • 2017-05-26
        相关资源
        最近更新 更多