2016-04-17 7 views
0

Schnelle Frage: Ich folgte diesem Tutorial, wo sie Benutzerauthentifizierungssystem anstelle von Gerät zu bauen.Benutzer zerstören - mit benutzerdefinierter Authentifizierung (Rails)

Mein Problem ist das Tutorial vermisst die Zerstörung Aktion, in der Gerät hat und so gut funktioniert.

meine Handlung schaffen

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 

Ich hoffe wirklich, dies ist jedoch keine absolute nuub Frage Ereignis obwohl ich einer bin. Aber kann jemand Tipps für eine Zerstörungsaktion geben? Und wie würde diese Aktion in Routen und durch eine link_to-Methode erscheinen? Ich möchte eine Deaktivierungsseite erstellen, die einen Sendevorgang ermöglicht und der Benutzer kann sein Konto löschen. Irgendwelche coolen Tipps auf der Deaktivierungsseite auf der Seite werden sehr geschätzt.

Antwort

0

Die Hartl-Schienen-Tutorial deckt das recht gut IMO. Sobald Sie die Zerstörungsaktion in Ihrem Controller definiert haben, können Sie einen Link erstellen, um ihr Konto zu deaktivieren, indem sie die Aktion destroy aufrufen und auf die Homepage oder eine Abschiedsseite umleiten. Solange Benutzer in Ihren Routen als Ressource aufgelistet sind, sollten Sie Ihre Routen nicht ändern müssen, da DELETE ein Standard-CRUD-Befehl ist.

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

zum Beispiel:

user_controller

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

Ansicht

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

Für die deactivate Seite, vielleicht können Sie eine boolean Spalte in der Tabelle Benutzer hinzufügen, sagen is_active,
und eine andere Controller-Aktion zur Deaktivierung, sagen deactivate, die nur die Spalte is_active als false für diesen Benutzer festlegen wird.
siehe Beispiel routes.rb für die Route.

@ncarroll ‚s Probe korrekt ist, für die Routen, wenn Sie in Ihrem routes.rb haben:

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

Dies wird automatisch Routen für die RESTful Aktionen erstellen, die destroy enthält.