簡體   English   中英

使用 Devise 以編程方式創建新用戶

[英]Create new user programmatically with Devise

我正在使用 Devise 來管理我的 rails 應用程序中的用戶。 我有一個可供管理員用戶使用的按鈕,它指向一個允許他們創建其他管理員用戶帳戶的表單。

提交表單時,調用此代碼:

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

當我退出並嘗試使用新的管理員帳戶登錄時,它似乎無法正常工作。 我猜上面的代碼不是使用 Devise 創建新用戶的正確方法。

編輯:

日志

Started POST "/users/13/create_admin" for 127.0.0.1 at 2013-07-16 17:01:38 +0100
Processing by UsersController#create_admin as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"VpP78Zy8SAcyC1Mgg6hEjG2I5jqNzIHXQGtbjUzDYVE=", "users"=>{"email"=>"test@admin.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up", "id"=>"13"}
  User Load (0.5ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 13 LIMIT 1
   (0.3ms)  BEGIN
   (0.1ms)  ROLLBACK
  Rendered users/create_admin.html.erb within layouts/application (0.0ms)
Completed 200 OK in 12ms (Views: 5.3ms | ActiveRecord: 0.9ms)

這是我的表格:

  <%= 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>

你實際上是在發帖

"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

在新設計中,應該從 params 哈希中刪除密碼。 如果密碼為空。 例如,我們要編輯配置文件但不更改密碼。 否則設計將無法通過驗證。

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

有關更多詳細信息,請參閱文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM