手动实例化设计用户模型

时间:2014-10-23 16:48:35

标签: ruby-on-rails devise

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

Instantiating Devise user models manually using contents of params hash

我不确定这是否是rails 4问题,但我发现我无法在控制器代码中手动实例化设计用户。这曾经在轨道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

这是我的routes.rb中特定于设计的部分:     devise_for:users,:controllers =&gt; {:registrations =&gt; &#34;登记&#34;}

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

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

1 个答案:

答案 0 :(得分:0)

最佳做法是在将其集成到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)"]} 

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