Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用designe以编程方式创建新用户_Ruby On Rails_Ruby_Ruby On Rails 3_Devise - Fatal编程技术网

Ruby on rails 使用designe以编程方式创建新用户

Ruby on rails 使用designe以编程方式创建新用户,ruby-on-rails,ruby,ruby-on-rails-3,devise,Ruby On Rails,Ruby,Ruby On Rails 3,Devise,我正在使用Desive管理rails应用程序中的用户。我有一个按钮可供管理员用户,这导致一个表单,允许他们创建其他管理员用户帐户 提交表单时,此代码称为: @user = User.new(:email => params[:email], :password => params[:password], :password_confirmation => params[:password_confirmation]) @user.admin = true @user.save

我正在使用Desive管理rails应用程序中的用户。我有一个按钮可供管理员用户,这导致一个表单,允许他们创建其他管理员用户帐户

提交表单时,此代码称为:

@user = User.new(:email => params[:email], :password => params[:password], :password_confirmation => params[:password_confirmation])
@user.admin = true
@user.save
它似乎无法正常工作,因为当我注销并尝试使用新的管理员帐户登录时,它失败了。我猜上面的代码不是使用Desive创建新用户的正确方法

编辑:

日志

这是我的表格:

  <%= form_for :users, :html => { :id => "signup-form" }, :url => create_admin_user_path do |f| %>
<div><%= f.label :email %>
<%= f.email_field :email, :autofocus => true %></div>

<div><%= f.label :password %>
<%= f.password_field :password %></div>

<div><%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation %></div>

<div class="actions">
  <div><%= f.submit "Sign up", :class => "btn btn-success" %></div>
</div>
{:id=>“注册表单”},:url=>create_admin_user_path do|f|%>
正确%>
“btn btn成功”%>

您实际上在发布

"users"=>{"email"=>"test@admin.com", "password"=>""}
所以,你应该

@user = User.new(:email => params[:users][:email], :password => params[:users][:password], :password_confirmation => params[:users][:password_confirmation]))
@user.admin = true
@user.save

在新的设计中,应该从参数散列中删除密码。如果密码为空。例如,我们希望编辑配置文件,但不更改密码。 否则设计将无法验证

if params[:user][:password].blank?
  params[:user].delete(:password)
  params[:user].delete(:password_confirmation)
end

有关更多详细信息,请参阅。

用户是在数据库中创建的吗?当您尝试使用新帐户登录时,是否表示密码错误?你能用新帐户的电子邮件地址重新设置密码吗?你的管理员真的是“用户”,还是“管理员用户”或“管理员”?你能发布你的用户模式吗?@JamesChevalier我检查了数据库,但没有将其添加到用户表中。更改为
@User.save--你会知道它不保存的原因,那我肯定会把!保存并获取后:验证失败:电子邮件不能为空,密码不能为空。所以我怀疑你是对的。然而,对于您发布的代码,我得到了nil:nilclass的未定义方法“[]”,得到它的应该是:user而不是:users。现在工作。谢谢你的帮助!如何使用
User.new(params[:User])
然后在模型中列出属性,或者使用
params[:User]进行筛选。拼接
if params[:user][:password].blank?
  params[:user].delete(:password)
  params[:user].delete(:password_confirmation)
end