2011-01-08 39 views
8

我試圖預先使用耙db:種子preload所有設計帳戶。所有其他模型的數據似乎插入到數據庫中,但由於某種原因,爲使用設計的Person模型創建了NO行。從網絡界面註冊工作正常,但我想避免手動創建帳戶,這就是我使用rake db:seed的原因。我從通過Web界面創建的帳戶複製了encrypted_pa​​ssword,password_salt。請讓我知道如何解決這個問題?非常感謝..無法創建設計帳戶使用Rake數據庫:種子的Rails 3.0

people = Person.create(
         :email => '[email protected]', 
         :encrypted_password => '$2a$10$SyacAOhJQtVeTcTPYm.ROuFbhGMylfj4fLrK3NHyeRwfEokKp2NVW', 
         :password_salt => '$2a$10$SyacAOhJQtVeTcTPYm.ROu', 
         :first_name => "nnn", 
         :last_name => "yyy" 
         ) 


in routes.rb i have. 

    devise_for :people 
+0

BTW,播種用戶的這種方法不是很有效,因爲每個用戶制定檢查是否有與用戶該電子郵件已經(一個單獨的查詢)和問題一個單獨的插入查詢 - 這對我來說真的很慢。我目前正在尋找更好的解決方案。我需要大約100,000個用於測試的用途... – 2011-03-25 14:40:07

回答

24

我已經在過去使用Devise完成了這項工作。我沒有嘗試設置加密密碼和鹽。我只是設置密碼和確認這樣的事情(我沒有我的項目得心應手):

Person.create(:email => '[email protected]', :password => 'foobar', :password_confirmation => 'foobar', :first_name => 'nn', :last_name => 'yy') 

試試看。

4

由於模型驗證,最有可能的「創建」方法悄然失敗,因此返回false。如果您使用「創建」,您將會產生錯誤。方法(with exclamation) - 如果驗證失敗,則此方法引發異常。

在您的情況下,驗證失敗的可能原因是(默認爲Devise)最小密碼長度爲6個字符,並且根本沒有提供密碼。

0

如果你不想重複在運行耙分貝:種子多次:

User.create(
    email: email, 
    password: password, 
    password_confirmation: password 
) unless User.where(email: email).exists? 
相關問題