2016-04-17 7 views
0

簡単な質問:このチュートリアルでは、deviseを使用する代わりにユーザー認証システムを構築しました。ユーザーを破壊する - カスタム認証(レール)

私の問題は、デベロッパーが準備が整っていてとてもうまくいっている破壊操作を見逃していることです。

はアクション

User_controller.rbある

def create 
    @user = User.create(user_params) 
    session[:user_id] = @user.id 
    if @user.valid? 
    flash[:notice] = "You've successfully Created Your Account! Welcome!" 
    redirect_to root_path 
    else 
    flash[:notice] = "Opps Something went bad, :/ Try again please" 
    render action: 'new' 
    end 
end 

を作成マイ私は本当に私は一人ですけれども、これは総nuub質問イベントではありません願っています。しかし、誰かが破壊行為のヒントを提供することはできますか?またそのアクションがルートとlink_toメソッドを使ってどのように表示されるのかを示します。私は送信をオフにする非アクティブ化ページを作成したいと思って、ユーザーは自分のアカウントをキャンセルすることができます。側面の非アクティブ化ページに向かうクールなヒントは非常に高く評価されます。

答えて

0

Hartlレールのチュートリアルでは、このIMOについてよく説明しています。あなたのコントローラに破棄アクションが定義されたら、destroyアクションを呼び出して自分のアカウントを無効にし、ホームページやさよならページにリダイレクトするためのリンクを作成することができます。ユーザーがルートにリソースとしてリストされている限り、DELETEは標準のCRUDコマンドであるため、ルートを変更する必要はありません。例えば

https://www.railstutorial.org/book/updating_and_deleting_users

user_controller非アクティブ化のページのために

def destroy 
    User.find(params[:id]).destroy 
    flash[:success] = "User deleted" 
    redirect_to users_url 
end 

ビュー

<%= link_to "delete", user, method: :delete, 
            data: { confirm: "You sure?" } %> 
0

、多分あなたは言う、ユーザーテーブルにboolean型の列を追加することができますis_active,
と無効化のためのもう1つのコントローラーアクション、たとえばdeactivateは、そのユーザーのis_active列をfalseとして設定します。
ルートのサンプルroutes.rbを参照してください。これは自動的にdestroyを含んでRESTfulなアクションのためのルートを作成します

Rails.application.routes.draw do 
    resources :users do 
    put :deactivate 
    end 
end 

:あなたのroutes.rbにしている場合

@ncarrollのサンプルでは、​​ルートに、正しいです。