1

在軌道上工作,我注意到軌道遷移的以下行爲。我不知道它是否是預期的行爲。有人有任何想法嗎?軌道的軌道怪異行爲破壞遷移

步驟1 - 我已經創建遷移此命令的

rails g migration CreateCustomer

結果 -

invoke active_record 
    create db/migrate/20151012160803_create_customer.rb 

第2步 - 現在我想撤消與上述命令生成的代碼。

rails d migration CreateCustomer 

結果這個命令 -

invoke active_record 
    remove db/migrate/20151012160803_create_customer.rb 

第3步 - 如果我運行的第2步命令rails d migration CreateCustomer再次,我得到不同的軌道版本

on Rails的3.2.17結果歧結果是 -

invoke active_record 
    remove migration.rb 

Result on Rails 4.0.0 is -

invoke active_record 
    remove create_table_migration.rb 

我的問題是爲什麼rails刪除migration.rbcreate_table_migration.rb文件?是真的刪除這些文件的軌道?

謝謝!

回答

0

不,它並沒有真正刪除此文件,如果您將運行:

rails d migration SomeUnRealMigration

,你會得到同樣的錯誤,你看那些2文件名是Rails的create_table_migration.rb核心文件:

class <%= migration_class_name %> < ActiveRecord::Migration 
     def change 
     create_table :<%= table_name %> do |t| 
     t.string :email,    null: false 
     t.string :password_digest,  null: false 
     t.string :password_reset_token, null: false, limit: 60 
     <% attributes.each do |attribute| -%> 
      <% if attribute.password_digest? -%> 
      t.string :password_digest<%= attribute.inject_options %> 
      <% else -%> 
      t.<%= attribute.type %> :<%= attribute.name %><%= attribute.inject_options %> 
      <% end -%> 
     <% end -%> 
     <% if options[:timestamps] %> 
     t.timestamps 
     <% end -%> 
    end 
    <% attributes_with_index.each do |attribute| -%> 
     add_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %> 
    <% end -%> 
    end 
    end 

這不會影響您的應用程序中的任何文件。