簡體   English   中英

Ruby on Rails:Devise Gem管理員定制

[英]Ruby on Rails: Devise Gem Admin customization

如何在haml中以鏈接或按鈕的形式運行此代碼:

current_user.update_attribute :admin, true

我正在努力做到這一點,因此網站的某個部分使一個管理員成為可能。 這是根據他們擁有的Wiki設計管理員帳戶的一部分。

可能最簡單的方法是在編輯用戶表單上創建一個復選框,該復選框對應於admin布爾模型字段。 然后,當您的更新操作保存用戶記錄時,它將通過以下形式來更新屬性:

-form_for @user do |f|
    %p
        = f.label :admin
        %br
        = f.check_box :admin 

自然,您將需要以某種方式限制對更新用戶表單的訪問,以便只有管理員才能看到它。 但是,這是一個單獨的問題。 希望這可以幫助!

只是想分享我的解決方案。 這似乎是最快完成此操作的最好方法。 我忘記了發布它:

我的電子郵件基本上是一個主帳戶,該帳戶將永遠是管理員。 或者,您可以將數據放到生產環境中以設置第一個帳戶。 從那里,任何管理員都可以設置其他管理員! 我將一個名為admin的布爾值添加到為Devise生成的用戶模型中,以設置管理員。

rails g migration AddAdminToUsers admin:boolean

admin_updater.html.haml

- if current_user.email == 'shravvmehtaa@gmail.com'
    = form_for :emails, url: make_admin_emails_path, :html => {:class => "form-inline"} do |f|
      .form-group
        %span
          %p{:style => "margin: 0px;"}
            = f.label :email, "Email:"
          %p{:style => "float: left;"}
            = f.text_field :email, :style=> "width: 200px;", :class => "form-control"
          %p{:style => "margin-left: 10px; float: left;"}
            = f.submit "Make Admin", :class => 'btn btn-success'
    = form_for :emails, url: delete_admin_emails_path, :html => {:class => "form-inline"} do |f|
      .form-group
        %span
          %p{:style => "margin: 0px;"}
            = f.label :email, "Email:"
          %p{:style => "float: left;"}
            = f.text_field :email, :style=> "width: 200px;", :class => "form-control"
          %p{:style => "margin-left: 10px; float: left;"}
            = f.submit "Delete Admin", :class => 'btn btn-danger'
    %b Admins:
    - @users = User.all
    - @users.each do |user|
      - if user.admin?
        %div{:style => "border: 2px solid black; background-color: white; padding: 5px; height: 63px; width: 400px; margin-bottom: 10px;"} 
          %span{:style => "float: left;"}  
            = image_tag (user.profile_pic)
          %span{:style => "float: left; margin-left: 10px;"}
            = user.name
            %br
            = link_to(user.email, "mailto:" + user.email)

控制者

class MemberController < ApplicationController
  before_filter :authenticate_user!, :except => [:show, :index]
  layout "dashboard"

  def make_admin
    @user = User.find_by_email(params[:emails][:email])
    unless @user.nil?
      @user.update_attribute(:admin, true)
    end
    redirect_to '/dashboard/develop'
  end

  def delete_admin
    @user = User.find_by_email(params[:emails][:email])
    unless @user.nil?
      @user.update_attribute(:admin, false)
    end
    redirect_to '/dashboard/develop'
  end

end

這是上面代碼部分的結果輸出。 我個人將我的軟件與Facebook集成在一起,因此我需要一些快速代碼來獲取電子郵件信息並在創建帳戶后設置管理員: 在此處輸入圖片說明

暫無
暫無

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

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