2012-03-02 23 views
1

我曾在舊項目中工作,但可能會在更新的版本中更改此項目。我目前正在使用Devise 2.0.4。我試圖我在遷移過程中創建新的用戶使用如何在遷移期間在Devise中創建新用戶

User.create :email => '[password]', 
      :password => '[password]', 
      :password_confirmation => '[password]' 

,但是當我這樣做,它有以下錯誤

rake aborted! 
An error has occurred, this and all later migrations canceled: 

ActionView::Template::Error 

Tasks: TOP => db:migrate:reset => db:migrate 
(See full trace by running task with --trace) 

任何幫助,將不勝感激中止!

或者,我可以使用rails shell創建用戶,但爲了保持一致性,我希望每次都有一個默認用戶啓動。

+2

爲什麼你不使用種子? – prasvin 2012-03-02 05:30:47

+0

好問題。主要是因爲我記得有一個概念,但不記得名字,當我搜索我所知道的時候,種子沒有出現。 – 2012-03-02 05:57:57

+0

所以,如果這個問題解決了,可能是你應該添加一個答案並關閉問題。但是,我不介意自己添加一個答案:P :) – prasvin 2012-03-02 06:21:43

回答

4

基於prasvin's comment,我發現更好的方式來做到這一點是進入db/seeds.rb和填充種子元素如

User.create(:email => '[email]', :password => '[password]', :password_confirmation => '[password]') 

這本身會導致不同的錯誤消息

rake aborted! 
Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true 

我最終通過a different post發現的事實與我的config/environments/development.rb文件中我還沒有設置的事實有關

config.action_mailer.default_url_options = { :host => 'localhost:3000'} 

這意味着,當Devise試圖發送確認電子郵件時,它失敗了,因爲它不知道要告訴他們回到哪個地址。這是造成ActionView::Template::Error的原因。一旦完成,它可以按預期完美工作。

相關問題