2016-04-17 83 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導軌教程涵蓋了這個相當好的國際海事組織。在您的控制器中定義銷燬操作後,您可以創建一個鏈接來停用其帳戶,調用銷燬操作並重定向到主頁或再見頁面。只要用戶在您的路由中被列爲資源,您就不需要修改您的路由,因爲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

對於停用頁面,也許你可以在你的用戶表中添加一個布爾值列,說is_active
和另一個控制器停用動作,比如說deactivate,它只會將該用戶的is_active列設置爲false。
請參閱路由的樣本routes.rb。

@ncarroll的樣本是正確的,對於路線,如果你在你的routes.rb

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

這會自動創建REST風格的行動,其中包括destroy路線。