2016-02-16 21 views
0

我已經生成用命令遷移:嘗試向用戶添加「層」屬性(使用設計)。 Ruby on Rails的

rails generate migration add_tier_to_user tier:string 

加層對於用戶來說,像「管理員」或「學生」。

然後,雖然,db:rake已停止工作,並返回一個錯誤。

遷移文件:

class AddTierToUser < ActiveRecord::Migration 
    def change 
    add_column :users, :tier, :string 
    end 
end 

錯誤:

ActiveRecord::RecordInvalid: Validation failed: Email has already been taken 
+0

如果您不提供更多信息,則很難提供幫助。對於初學者,向我們展示遷移文件並複製錯誤。就我所知,你運行了你發佈的確切的行,並且由於表名通常是複數,因此rake找不到用於執行遷移的「用戶」表。 –

+0

類AddTierToUser <的ActiveRecord ::遷移 DEF改變 add_column:用戶:一級,:字符串 結束 結束 呃,試圖讓它出現在列表中下降,但似乎並沒有做那?此外,在rake中止後出現的錯誤數量相當多。但我得到像「ActiveRecord :: RecordInvalid:驗證失敗:電子郵件已被採取」的錯誤。 我也不明白。 – gllwrnce

回答

0

通過你得到的錯誤來看,我覺得這個事情發生了:

  1. 您創建了兩個或更多User記錄具有相同的email值。
  2. 您生成了遷移文件。
  3. 您爲email字段添加了唯一性驗證。
  4. 您試圖運行遷移。

如果我是正確的,問題是不是本身,造成遷移而是,當您通過rake db:something加載Rails環境,正在創建或更新User自動事實。

+0

所以我有點半猜你在說什麼,但那麼你的建議是什麼? – gllwrnce

+0

請將'rake db:migrate'的日誌/輸出添加到問題中。 – tompave