[英]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.