如何在迁移期间在Devise中创建新用户

时间:2012-03-02 05:10:21

标签: ruby-on-rails ruby-on-rails-3 devise

我让这个项目在一个旧项目中工作,但在最近的一个版本中,这可能会发生变化。我目前正在使用Devise 2.0.4。我正在尝试使用

在迁移期间创建新用户
 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创建用户,但为了保持一致性,我希望每次都有一个默认用户开始使用。

1 个答案:

答案 0 :(得分: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的原因。完成所有操作后,它会按预期完美运行。