Advertisement
Guest User

Untitled

a guest
Aug 25th, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.69 KB | None | 0 0
  1. class DeleteUserAccount
  2.   def initialize(user)
  3.     @user = user
  4.   end
  5.  
  6.   def delete!
  7.     return false unless can_delete?
  8.  
  9.     User.transaction do
  10.       lock_password
  11.       schedule_deletion
  12.     end
  13.   end
  14.  
  15.   def error_messages
  16.     @error_messages ||= [].tap do |errors|
  17.       errors << "you can't leave a paid board" if in_a_paid_board?
  18.     end
  19.   end
  20.  
  21.   protected
  22.  
  23.   def can_delete?
  24.     !in_a_paid_board?
  25.   end
  26.  
  27.   def in_a_paid_board?
  28.     @in_a_paid_board ||= @user.demos.where(is_paid: true).first.present?
  29.   end
  30.  
  31.   def lock_password
  32.     @user.update_attributes(encrypted_password: "****NO LOGIN****")
  33.   end
  34.  
  35.   def schedule_deletion
  36.     @user.delay.destroy
  37.   end
  38. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement