[Ruby on Rails] Logisches Löschen (Auszahlungsfunktion)

Ziel

画面収録 2020-10-25 21.31.39.mov.gif

Entwicklungsumgebung

ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina

Annahme

fließen

1 Spalte hinzufügen 2 Modell bearbeiten 3 Bearbeiten Sie den Controller

Spalte hinzufügen

Terminal


$ rails g migration AddIsValidToUsers is_valid:boolean

Standard hinzugefügt: true und null: false. Durch die Verwendung von Boolean wird bestimmt, ob Sie sich mit ture oder false abgemeldet haben oder nicht. In den folgenden Fällen wird der Anfangswert auf true gesetzt. Wenn Sie also bereits zurückgezogen haben, ist er false.

db/migrate/xxxxxxxxxxxxx_add_is_valid_to_users.rb


class AddIsValidToUsers < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :is_valid, :boolean, default: true, null: false
  end
end

Terminal


$ rails db:migrate

Controller bearbeiten

Bildschirm zum Abbestellen erstellen und Aktion zum Abbestellen erstellen

app/controllers/homes_controller.rb


  def unsubscribe
    @user = User.find_by(name: params[:name])
  end

  def withdraw
    @user = User.find_by(name: params[:name])
    @user.update(is_valid: false)
    reset_session
    redirect_to root_path
  end

Eine Beschreibung, die das Anmelden nach dem Abheben verhindert.

app/controllers/users/sessions_controller.rb


class Users::SessionsController < Devise::SessionsController
  before_action :reject_inactive_user, only: [:create]

...

  def reject_inactive_user
    @user = User.find_by(name: params[:user][:name])
    if @user
      if @user.valid_password?(params[:user][:password]) && [email protected]_valid
        redirect_to new_user_session_path
      end
    end
  end
end

Routen bearbeiten

config/routes.rb


get 'unsubscribe/:name' => 'homes#unsubscribe', as: 'confirm_unsubscribe'
patch ':id/withdraw/:name' => 'homes#withdraw', as: 'withdraw_user'
put 'withdraw/:name' => 'users#withdraw'

Ansicht bearbeiten

erb:app/views/homes/unsubscribe.html.erb


<div>
  <h2>Möchten Sie sich wirklich abmelden?</h2>
  <div>
    <p>Klicken Sie zum Abbestellen auf "Abbestellen".</p>
  </div>
  <div>
    <%= link_to 'Nicht zurückziehen', mypage_path(@user) %>
    <%= link_to "Abheben", withdraw_user_path(@user), method: :patch %>
  </div>
</div>

Referenz

PUT, POST oder PATCH?

Zusammenfassung

Ich denke, es gibt verschiedene Vor- und Nachteile des logischen Löschens. Kundeninformationen sind wichtig, wenn Sie einen Service betreiben Es ist besser, sich durch logisches Löschen als durch physisches Löschen abzumelden Es wird empfohlen, da es als Mittel zur Wiederbelebung verwendet werden kann.

Auf Twitter werden auch Technologien und Ideen hochgeladen, die nicht auf Qiita hochgeladen wurden Ich wäre Ihnen dankbar, wenn Sie mir folgen könnten. Klicken Sie hier für Details https://twitter.com/japwork

Recommended Posts

[Ruby on Rails] Logisches Löschen (Auszahlungsfunktion)
[Ruby on Rails] Paging-Funktion eingeführt
[Ruby on Rails] CSV-Ausgabefunktion
[Ruby on Rails] Implementierung der Kommentarfunktion
[Ruby on Rails] DM, Chat-Funktion
[Ruby on Rails] Suchfunktion (nicht ausgewählt)
[Rails] Hinzufügen der Ruby On Rails-Kommentarfunktion
Befehl zum Erstellen / Löschen von Ruby on Rails-Modellen
[Ruby on Rails] Implementierung einer ähnlichen Funktion
Ruby on Rails Elementary
Ruby On Rails Association
Implementierung der Ruby on Rails-Anmeldefunktion (Sitzung)
Ruby on Rails Implementierung der automatischen Mail-Sendefunktion
[Ruby on Rails] Nachbearbeitungsfunktion (Aktualisieren, Löschen)
[Ruby on Rails] Asynchrone Kommunikation der Posting-Funktion, Ajax
Ruby on Rails Lernrekord -2020.10.03
Portfolioerstellung Ruby on Rails
Implementierung der Ruby on Rails-Anmeldefunktion (Devise Edition)
Ruby on Rails Lernrekord -2020.10.04
[Ruby on Rails] Debuck (bindend.pry)
Ruby on Rails Lernrekord -2020.10.05
Ruby on Rails Lernrekord -2020.10.09
[Ruby on Rails] Post-Score-Ranking-Funktion (gesamte Anzeige)
Ruby on Rails lernen Rekord-2020.10.07 ②
[Ruby on Rails] Post-Bildvorschau-Funktion in Refile
Ruby on Rails lernen Rekord-2020.10.07 ①
Brechen Sie die Ruby on Rails-Migration ab
Ruby on Rails Lernrekord -2020.10.06
Zusammenfassung der Ruby on Rails-Validierung
[Ruby on Rails] Suchfunktion (Modell, Methodenauswahlformel)
Ruby on Rails Grundlegendes Memorandum
[Ruby on Rails] Lesezeichenfunktion (bevorzugte Registrierung, wie): Eine Richtung
[Rails] Implementiere die Event-End-Funktion (logisches Löschen) mit Paranoia (Gem)
[Ruby on Rails] Implementieren Sie die Anmeldefunktion von add_token_to_users mit API
[Ruby on Rails] Leseversuch (: [],: Schlüssel)
Ruby on Rails-Variablen, konstante Zusammenfassung
Installation von Ruby + Rails unter Ubuntu 18.04 (rbenv)
Grundkenntnisse in Ruby on Rails
Progate Ruby on Rails5 Rückblick
[Rails] Implementierung der Benutzerrückzugsfunktion
Ruby on Rails Japanisch-Englisch kompatibler i18n
(Ruby on Rails6) Gepostete Inhalte "löschen"
[Rails] Kommentarfunktion (Registrierung / Anzeige / Löschung)
[Ruby on Rails] Erstellung der Bestätigungsseite
Ruby On Rails entwickelt Routing-Konflikte
[Ruby on Rails] Praktische Hilfsmethode
[Ruby on Rails] Stoppen Sie "Looping bis ..."
Ich möchte eine Browsing-Funktion mit Ruby on Rails hinzufügen
[Ruby on Rails] Posting-Funktion, die nur angemeldete Benutzer posten können
(Ruby on Rails6) Erstellen Sie eine Funktion zum Bearbeiten des veröffentlichten Inhalts
[Ruby on Rails] Einführung der Anfangsdaten