2014-04-12 140 views
1

fairly new to ruby and ROR。我有幾個關於遷移的問題。我看了一下指南,但它讓我感到困惑。是什麼版本耙分貝遷移

http://guides.rubyonrails.org/migrations.html

class CreateUserModel < ActiveRecord::Migration 
    def self_up 
    create_table :users do |t| 
     t.column :username, :string 
     t.column :email, :string 
     t.column :password_hash, :string 
     t.column :password_salt, :string 
    end 

    def self_down 
    drop_table :users 
    end 
end 
  1. 當我搜索谷歌,我發現在這個命令來運行遷移rake db:migrate VERSION=20098252345。我很困惑這個版本是什麼使用 命令。我剛剛創建了一個遷移0001_create_user_model.rb
  2. 以上是我migration表。當我運行/執行這個文件時,它創建了什麼。它爲我創建表格和模型嗎?
+0

@vee:Rails 4和Ruby 1.9.3 – Shane

+0

請參閱:['Running Migrations'](http://edgeguides.rubyonrails.org/migrations.html#running-migrations)。 – vee

+0

@Vee:你看到文件名和類名有什麼問題[0001_create_user_model.rb] – Shane

回答

1

rake db:migrate VERSION=2009825234520098252345第6部分閱讀更多關於僅僅是一個前綴號給它位於db/migrate directory.It遷移文件只是一個UTC timestamp(YYYYMMDDHHMMSS)以不同於其生成看起來像這樣20098252345_create_user_model.rb

Guides

在內部Rails的another.The遷移文件一個文件只使用遷移的數量(時間戳)識別它們。在Rails 2.1之前,遷移編號從1開始並在每次生成遷移時增加。對於多個開發人員,這些衝突很容易要求您回滾遷移並對其重新編號。使用Rails 2.1+時,通過使用遷移的創建時間來識別它們,很大程度上避免了這一點。您可以通過將以下行添加到config/application.rb來恢復到舊的編號方案。

config.active_record.timestamped_migrations = false 

希望它有幫助!

1

rake命令的版本實際上是年份,月份等的時間戳...... 這是爲了指定您想要遷移的距離。

您在任何典型應用許多遷移文件。由於所有這些遷移都會對數據庫模式進行更改(即表中的哪些表,表名,屬性列等)。

Rails通過建立定義模式(即創建表並指定哪些屬性和列表具有)的句柄他們一步一步從遷移。

這使得它方便的通過回滾和向前遷移到編輯模式......就像任何版本控制系統如何做。

現在,您可以指定一個版本來指定要實際「遷移」到哪個遷移並將其定義爲......或者您可以運行rake db:migrate以將所有遷移文件運行到最後一個。我通常沒有具體指定版本,因爲我通常運行所有遷移到最新版本。這只是一個選項。如果您需要回滾一些遷移和改變一些東西,有各種選擇指定的步數等,可以在Google以及像rake db:rollback命令。

這通常工作。如果您在數據庫表在你的模型數據記錄(即行)驗證,您可能會遇到遷移問題,你可以的http://guides.rubyonrails.org/migrations.html