重命名Rails迁移文件会影响我的实时应用吗?

时间:2014-03-11 03:45:30

标签: ruby-on-rails-3 activerecord rails-migrations

我编辑了一些迁移文件的内容,以解决Paperclip和Attachment模型之间的问题,并将其重命名为Upload

01234_create_attachments.rb

class CreateAttachments < ActiveRecord::Migration
  def change
    create_table :attachments do |t|
      t.string :name
      t.string :attachment_url
      t.timestamps
    end
  end
end

成了这个:

01234_create_attachments.rb

class CreateUploads < ActiveRecord::Migration
  def change
    create_table :uploads do |t|
      t.string :name
      t.string :upload_url
      t.timestamps
    end
  end
end

请注意,我只编辑了文件内容,而不是文件名。

现有的应用程序运行正常,但现在我无法git clone将代理转移到新服务器,因为rake db:migrate失败。如果我然后在新服务器上编辑实际的迁移文件名,它就会正常运行:

01234_create_attachments.rb&gt; 01234_create_uploads.rb

我的问题是,如果我在我的主分支中重命名迁移文件,那么在将来我rake db:migrate时会导致我现有的实时应用出现问题吗?

1 个答案:

答案 0 :(得分:3)

  1. 您的文件名和迁移的类名应该匹配。
  2. schema_migrations表用于确定迁移是否应该运行。由于该表只有时间戳,除非您更改时间戳,否则不会重新运行迁移。
  3. 建议不要在生产环境中运行后更改现有迁移。如果您需要更改任何内容,请添加新的迁移。