ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina
Ajouter 1 colonne 2 Modifier le modèle 3 Modifier le contrôleur
Terminal
$ rails g migration AddIsValidToUsers is_valid:boolean
Valeur par défaut ajoutée: true et null: false. En utilisant boolean, il est déterminé si vous vous êtes désabonné ou non avec ture ou false. Dans les cas suivants, la valeur initiale est définie sur true, donc si vous vous êtes déjà retiré, elle sera 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
Créer un écran de désabonnement et une action de désabonnement
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
Une description qui empêche la connexion après le retrait.
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>Voulez-vous vraiment vous désinscrire?</h2>
<div>
<p>Pour vous désinscrire, cliquez sur «Se désabonner».</p>
</div>
<div>
<%= link_to 'Ne pas retirer', mypage_path(@user) %>
<%= link_to "Se désister", withdraw_user_path(@user), method: :patch %>
</div>
</div>
Je pense que la suppression logique présente divers avantages et inconvénients, Les informations client sont importantes lors de l'exploitation d'un service, Il est préférable de se désinscrire par suppression logique plutôt que par suppression physique Il est recommandé car il peut être utilisé comme moyen de renaissance.
De plus, sur Twitter, les technologies et les idées qui n'ont pas été téléchargées sur Qiita sont également téléchargées, donc Je vous serais reconnaissant si vous pouviez me suivre. Cliquez ici pour plus de détails https://twitter.com/japwork
Recommended Posts