2012-01-11 53 views
1

我想安裝血統寶石,但我有問題rake db:migrate祖先分貝:遷移

我按照Ancestry github頁面上的說明進行操作。我已經做了rails g migration add_ancestry_to_message ancestry:string 我編輯遷移文件後(以下railcast#262)爲:

class AddAncestryToMessage < ActiveRecord::Migration 
    def self.up 
    add_column :messages, :ancestry, :string 
    add_index :messages, :ancestry 
    end 

    def self.down 
    remove_index :messages, :ancestry 
    remove_column :messages, :ancestry 
    end 
end 

當我再運行rake db:migrate我收到以下錯誤:

== AddAncestryToMessage: migrating =========================================== 
-- add_column(:messages, :ancestry, :string) 
rake aborted! 
An error has occurred, this and all later migrations canceled: 

SQLite3::SQLException: no such table: Shipmgr: ALTER TABLE "Message" ADD "ancestry" varchar(255) 

Tasks: TOP => db:migrate 

我曾嘗試這在一個新創建的rails應用程序和一個現有的rails應用程序上,但我仍然無法得到這個工作。有沒有人在這個問題上有任何建議?

回答

0

你應該嘗試改變遷移類名稱的使用複數(表)形式的「消息」:

class AddAncestryToMessages < ActiveRecord::Migration 

,或者更準確的說,更改遷移發生器命令:

rails g migration add_ancestry_to_messages ancestry:string 
+0

感謝你的建議。我試過這個,它仍然拋出相同的錯誤信息。我已經按照你所描述的方式進行了設置,我在包含'class Messages 2012-01-12 10:40:23

+0

的模型中也有messages.rb我認爲問題可能是你如何使用複數和單數你的代碼中的名字。以下是一般規則:模型類名稱和模型文件名應使用單數(類Message和message.rb)。遷移應參考總是複數的表名。有許多方法可以改變這種默認行爲,但首先嚐試遵守默認設置,看看是否可行 – PinnyM 2012-01-12 14:45:54

+0

另外,您是否可以確認您是否有以前的遷移來創建:messages表? – PinnyM 2012-01-12 17:05:24