ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina
1 Spalte hinzufügen 2 Modell bearbeiten 3 Bearbeiten Sie den Controller
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
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
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'
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>
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