设计::无法通过rake db:seed创建用户(失败confirmation_instructions)

Pyk*_*kih 5 devise ruby-on-rails-3.1

用户模型有一个功能

def self.createadmin(
User.create(:email => "abc@gmail.com", :password => "123456e", :password_confirmation => "123456e", :terms_of_service => '1')
end
Run Code Online (Sandbox Code Playgroud)

在 rake db:seed 中,我必须调用 User.createadmin

然而,这失败了

ActionView::Template::Error: ActionView::Template::Error
    from /Users/bever/Projects/tr/app/views/devise/mailer/confirmation_instructions.html.erb:3:in `_app_views_devise_mailer_confirmation_instructions_html_erb___1974818942364630283_2154906860'
Run Code Online (Sandbox Code Playgroud)

然后我更改了 createadmin 中的代码

begin
User.create(:email => "abc@gmail.com", :password => "123456e", :password_confirmation => "123456e", :terms_of_service => '1')
rescue => e
User.create(:email => "abc@gmail.com", :password => "123456e", :password_confirmation => "123456e", :terms_of_service => '1')
end    
Run Code Online (Sandbox Code Playgroud)

有用!任何线索为什么会发生这种情况?

Cor*_*uan 2

您是否尝试过从 db/seeds.rb 文件而不是模型进行播种?当您尝试在模型上执行此操作时,设计可能正在尝试发送确认邮件。

您应该像这样在 seeds.rb 文件上创建管理员用户

User.create(:email => "abc@gmail.com", :password => "123456e", :password_confirmation => "123456e", :terms_of_service => '1')
Run Code Online (Sandbox Code Playgroud)

请记住,如果您使用的是可确认的设备模块,则应将此字段添加到查询中。

:confirmed_at => Time.now
Run Code Online (Sandbox Code Playgroud)

也许您应该添加确认令牌和其他有助于通过 Rails 应用程序(而不是在控制台上)管理管理员帐户的字段。

PD:也许如果您发布更多显示的错误以及视图中的行,我可以为您提供更多帮助。

问候