ruby-on-rails – 允许管理员激活或停用用户 – Rails

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 允许管理员激活或停用用户 – Rails前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我设法制作了一个仅用于注册登录的应用程序.目前,我允许用户通过邮件帐户激活(遵循本教程: https://www.railstutorial.org/book/account_activation_password_reset和’rails generate controller AccountActivations –no-test-framework ‘)但我希望管理员能够激活或停用用户.在我的用户模型中,我设法定义了两种方法
def activate_account!   
  update_attribute :is_active,true 
end

def deactivate_account!   
  update_attribute :is_active,false 
end

在我的用户部分视图上,我设法

<% if current_user.admin? && !current_user?(user) %> 
  <%= button_to "Deactivate",user,data: { confirm: "Are you sure?" } %> 
<% end %>

我的路线看起来像这样:

get 'password_resets/new'
get 'password_resets/edit'
root             'static_pages#home'
get 'help'    = 'static_pages#help'
get 'about'   = 'static_pages#about'
get 'contact' = 'static_pages#contact'
get 'signup'  = 'users#new'
get    'login'   = 'sessions#new'
post   'login'   = 'sessions#create'
delete 'logout'  = 'sessions#destroy'
resources :users
resources :account_activations,only: [:edit]
resources :password_resets,only: [:new,:create,:edit,:update]

问题是我不知道如何继续.我不想使用Devise或CanCan,因为作为初学者,我想知道如何手动完成.请帮助我实现从应用程序激活和停用用户(Admin只能这样).

Here is my app.

解决方法

好的,首先阅读Hartl’s Rails教程的 chapters 9 and 10.

用户添加和管理标志

rails g migration add_admin_to_users admin:boolean

这会给你.admin? “免费”,因为Active Record将生成方法.

我会像这样写你的按钮

<% if current_user.admin? && @user != current_user %> <%=link_to "deactivate",deactivate_path(user_id: @user),method: :post,data: { confirm: "Are you sure?" } %> <% end %>

然后在你的控制器中:

def deactivate
  user = User.find(params[:user_id])
  if current_user.admin?
    user.deactivate_account!
    redirect_to users_path 
  else
    redirect_to :back
  end
end

在您的路线中,类似于:

post "/deactivate",to: "users#deactivate"

无论如何,我给你一个粗略的指导,但是请阅读Hartl的教程,因为你的用例几乎涵盖在那里.

祝好运!

原文链接:https://www.f2er.com/ruby/265142.html

猜你在找的Ruby相关文章