繁体   English   中英

手动实例化设计用户模型

[英]Manually instantiating devise user models

这个问题与我几年前问的一个问题有关:

使用params hash的内容手动实例化Devise用户模型

我不确定这是否是Rails 4问题,但是我发现无法在控制器代码中手动实例化devise用户。 这曾经在rails 3。

class RegistrationsController < Devise::RegistrationsController

  ...
  def schema_test

    @user = User.new(:email => 'jhw@ausd.k12.edu', :password => 'asdf123', :password_confirmation => 'asdf123')
    @user.save
  end
  ...
end

这是我的route.rb的特定于设计的部分:devise_for:users,:controllers => {:registrations =>“ registrations”}

devise_scope :user do
  get '/schema_test', to: 'registrations#schema_test'
end

当我调用schema_test时,发现用户对象没有保存到数据库中。 有没有人有什么建议?

最佳实践是在将其集成到Rails应用程序中之前检查rails控制台中的行为。

解决问题的最简单方法是阅读设计返回的错误消息。 这可能是由于不符合密码要求和/或您的数据库中已经存在该电子邮件引起的。

从应用程序的根目录运行rails c

@user = User.new(:email => 'jhw@ausd.k12.edu', :password => 'asdf123', :password_confirmation => 'asdf123')

# Check if the user object is valid
@user.valid?

# If it comes back false, read the error messages
@user.errors.messages

=> {:password=>["is too short (minimum is 8 characters)"]} 

在您的示例中,由于密码太短而未保存用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM