簡體   English   中英

如何在ROR中使用devise添加管理員

[英]how to add admin with devise in ROR

我正在使用devise gem,我想創建管理員

Rails G遷移add_admin_to_user

在數據庫中

 def change
    add_column :users, :admin , :boolean , {default: false}
  end

def用戶

def admin?
    user=User.create(email: "info@presale.ca",password: "12345678")
    user.admin=true
    user
    user.save
    admin
  end
end

在索引頁面

<% if current_user && current_user.admin? %>
<% end %>

def用戶有問題嗎,如何解決?

因為您的用戶模型上已經有一個布爾:admin屬性,所以有一個默認的admin? 開箱即用的方法。 如果調用類似User.find(1).admin? 它會根據您在數據庫中的值返回true或false-因此您可能不想覆蓋此值。

在用戶模型中定義一個新方法來分配admin屬性。

def make_admin!
  self.update_attribute(:admin, true)
end

現在您可以調用User.find(1).make_admin! 在您的控制器中,在Rails控制台中,或者在您有User實例的任何地方。

然后,您可以將視圖中的代碼更改為此:

<% if user_signed_in? && current_user.admin? %>
  # Show Admin Stuff
<% end %>

有一些不理想的事情:

  1. 您的屬性User.admin是一個布爾值,這意味着您無需在User.rb(模型)中添加方法,就可以執行User.admin? 它將返回true或false。

  2. 在檢查當前用戶是否為管理員的方法中創建管理員用戶不是一個好主意。 最快的方法是進入Rails控制台(通過您的終端)並將User更新為admin = true,例如User.last.update_attribute(:admin, true)

暫無
暫無

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

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